Skip to content

Commit

Permalink
Make BuildFramework.sh work on non Jenkins build
Browse files Browse the repository at this point in the history
Made BuildFramework.sh work independently of Jenkins build.
  • Loading branch information
pasin committed Sep 18, 2018
1 parent 58f2cc2 commit b511877
Showing 1 changed file with 47 additions and 59 deletions.
106 changes: 47 additions & 59 deletions BuildScripts/BuildFramework.sh
Original file line number Diff line number Diff line change
@@ -1,36 +1,30 @@
source ~jenkins/.bash_profile
if [[ -e ~jenkins/.bash_profile ]] ; then source ~jenkins/.bash_profile ; fi

set -e

LOG_TAIL=-24

function usage
{
echo -e "\nuse: ${0} branch_name<1.x> release_number build_number edition<community|enterprise> target<ios|macosx|tvos> sqlcipher_branch<release/1.3.2>\n\n"
echo -e "\nuse: ${0} release_number build_number edition<community|enterprise> platform<ios|macosx|tvos> \n\n"
}
if [[ ! ${1} ]] ; then usage ; exit 99 ; fi
GITSPEC=${1}

# master branch maps to "0.0.0" for backward compatibility with pre-existing jobs
if [[ ${GITSPEC} =~ "master" ]] ; then GITSPEC=0.0.0 ; fi

if [[ ! ${2} ]] ; then usage ; exit 88 ; fi
VERSION=${2}
if [[ ! ${1} ]] ; then usage ; exit 88 ; fi
VERSION=${1}

if [[ ! ${3} ]] ; then usage ; exit 77 ; fi
BLD_NUM=${3}
if [[ ! ${2} ]] ; then usage ; exit 77 ; fi
BLD_NUM=${2}
REVISION=${VERSION}-${BLD_NUM}

if [[ ! ${4} ]] ; then usage ; exit 66 ; fi
EDITION=${4}
if [[ ! ${3} ]] ; then usage ; exit 66 ; fi
EDITION=${3}
EDN_PRFX=`echo ${EDITION} | tr '[a-z]' '[A-Z]'`

if [[ ! ${5} ]] ; then usage ; exit 55 ; fi
OS=${5}
if [[ ! ${4} ]] ; then usage ; exit 55 ; fi
OS=${4}
EDN_PRFX=`echo ${OS} | tr '[a-z]' '[A-Z]'`

if [[ ${6} ]] ; then LIBSQLCIPHER_BRANCH=${6} ; else LIBSQLCIPHER_BRANCH=${GITSPEC} ; fi

if [[ ${7} ]] ; then REL_STAGE=${7} ; fi
if [[ ${5} ]] ; then REL_STAGE=${5} ; fi
if [ -z $REL_STAGE ]
then
CBL_VERSION=${VERSION}
Expand All @@ -44,9 +38,9 @@ then
WORKSPACE=`pwd`
fi

BASE_DIRNAME=couchbase-lite-${OS}-${EDITION}
BASE_DIR=${WORKSPACE}/${BASE_DIRNAME}
BASE_DIR=`pwd`
SQLCIPHER="libsqlcipher"
LIBSQLCIPHER_BRANCH="release/1.3.2"
ZIPFILE_STAGING="zipfile_staging"
ZIP_FILE=couchbase-lite-${OS}-${EDITION}_${REVISION}.zip
ZIP_PATH=${BASE_DIR}/${ZIP_FILE}
Expand Down Expand Up @@ -88,50 +82,39 @@ rm -f ${BASE_DIR}/*.zip

DOC_ZIP_FILE=couchbase-lite-${OS}-${EDITION}_${REVISION}_Documentation.zip
DOC_ZIP_PATH=${BASE_DIR}/${DOC_ZIP_FILE}
DOC_ZIP_ROOT=${BASE_DIR}/build/Release
DOC_ZIP_ROOT=${BASE_DIR}/build_doc/Release
DOC_ZIP_ROOT_DIR=${DOC_ZIP_ROOT}/${REVISION}

LICENSED=${WORKSPACE}/build/license/couchbase-lite
BUILD_REPO_DIR=${WORKSPACE}/build
LICENSED=${BUILD_REPO_DIR}/license/couchbase-lite
LICENSEF=${LICENSED}/LICENSE_${EDITION}.txt
LIC_DEST=${ZIP_SRCD}/LICENSE.txt

README_D=${BASE_DIR}
README_F=${README_D}/README.md
RME_DEST=${ZIP_SRCD}

export TAP_TIMEOUT=120
git show --stat
REPO_SHA=`git log --oneline --pretty="format:%H" -1`

echo ============================================ `date`
cd ${WORKSPACE}
echo ============================================ sync couchbase-lite-ios
echo ============================================ to ${GITSPEC} into ${BASE_DIR}
echo "============================================ Prepare ${ZIP_FILE}"
if [[ -e ${ZIP_SRCD} ]] ; then rm -rf ${ZIP_SRCD} ; fi
mkdir -p ${ZIP_SRCD}

if [[ ! -d ${BASE_DIRNAME} ]]
# Download build repo
if [[ ! -e ${BUILD_REPO_DIR} ]]
then
git clone https://github.com/couchbase/couchbase-lite-ios.git ${BASE_DIRNAME}
echo "============================================ Clone https://github.com/couchbase/build.git ..."
git clone https://github.com/couchbase/build.git ${BUILD_REPO_DIR}
fi

if [[ ${GITSPEC} =~ "0.0.0" ]]
if [[ ! -e ${BUILD_REPO_DIR} ]]
then
BRANCH=master
else
BRANCH=${GITSPEC}
echo -e "License files not found\n"
exit 555
fi

cd ${BASE_DIRNAME}
git fetch --all
git checkout -B ${BRANCH} --track origin/${BRANCH}
git submodule update --init --recursive
git show --stat
REPO_SHA=`git log --oneline --pretty="format:%H" -1`

echo ============================================ prepare ${ZIP_FILE}
if [[ -e ${ZIP_SRCD} ]] ; then rm -rf ${ZIP_SRCD} ; fi
mkdir -p ${ZIP_SRCD}

cd ${BASE_DIR}

# Temporary solution to download prebuilt sqlcipher from couchbaselab
Download prebuilt sqlcipher from couchbaselab
if [[ -e ${SQLCIPHER} ]] ; then rm -rf ${SQLCIPHER} ; fi
git clone https://github.com/couchbaselabs/couchbase-lite-libsqlcipher.git ${SQLCIPHER}
cd ${SQLCIPHER}
Expand All @@ -142,16 +125,21 @@ if [[ ! -e ${LIB_SQLCIPHER_DEST} ]] ; then mkdir -p ${LIB_SQLCIPHER_DEST} ; fi
cp ${LIB_SQLCIPHER} ${LIB_SQLCIPHER_DEST}

echo "Building target=${OS} ${SDK}"
XCODE_CMD="xcodebuild CURRENT_PROJECT_VERSION=${BLD_NUM} CBL_VERSION_STRING=${CBL_VERSION} CBL_SOURCE_REVISION=${REPO_SHA}"
echo "using command: ${XCODE_CMD}"
echo "using command: ${XCODE_CMD}" >> ${LOG_FILE}

BUILD_VERSION="CURRENT_PROJECT_VERSION=${BLD_NUM} CBL_VERSION_STRING=${CBL_VERSION} CBL_SOURCE_REVISION=${REPO_SHA}"
XCODE_CMD="xcodebuild -scheme \"${SCHEME}\" -sdk \"${SDK}\" -configuration Release RUN_CLANG_STATIC_ANALYZER=NO ONLY_ACTIVE_ARCH=NO BITCODE_GENERATION_MODE=bitcode CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= ${BUILD_VERSION}"

echo "Using command: ${XCODE_CMD}"
echo "Using command: ${XCODE_CMD}" >> ${LOG_FILE}
echo ============================================ ${OS} target: ${TARGET}
echo ============================================ ${OS} target: ${TARGET} >> ${LOG_FILE}

${XCODE_CMD} -scheme "${SCHEME}" -configuration "Release" -sdk "${SDK}" "RUN_CLANG_STATIC_ANALYZER=NO" "ONLY_ACTIVE_ARCH=NO" "BITCODE_GENERATION_MODE=bitcode" "CODE_SIGNING_REQUIRED=NO" "CODE_SIGN_IDENTITY=" clean build 2>&1 >> ${LOG_FILE}
eval "${XCODE_CMD} clean build 2>&1" >> ${LOG_FILE}

BUILD_DIR=`eval "${XCODE_CMD} -showBuildSettings" | grep -w BUILD_DIR | head -n 1 | awk '{ print $3 }'`

BUILT_PRODUCTS_DIR=`eval "${XCODE_CMD} -showBuildSettings" | grep -w BUILT_PRODUCTS_DIR | head -n 1 | awk '{ print $3 }'`

BUILD_DIR=`${XCODE_CMD} -scheme "${SCHEME}" -configuration "Release" -sdk "${SDK}" -showBuildSettings|grep -w BUILD_DIR|head -n 1|awk '{ print $3 }'`
BUILT_PRODUCTS_DIR=`${XCODE_CMD} -scheme "${SCHEME}" -configuration "Release" -sdk "${SDK}" -showBuildSettings|grep -w BUILT_PRODUCTS_DIR|head -n 1|awk '{ print $3 }'`
if [[ $OS =~ ios ]] || [[ $OS =~ tvos ]]
then
BUILT_DOC_DIR="${BUILD_DIR}/Release-${SDK}/Documentation"
Expand All @@ -171,15 +159,15 @@ then
fi

# Documentation:
echo ============================================ package ${DOC_ZIP_FILE}
echo ============================================ Package ${DOC_ZIP_FILE}
DOC_LOG=${WORKSPACE}/doc_zip.log
if [[ -e ${DOC_LOG} ]] ; then rm -f ${DOC_LOG} ; fi
rm -rf "${DOC_ZIP_ROOT_DIR}"
mkdir -p "${DOC_ZIP_ROOT_DIR}"
mv "${BUILT_DOC_DIR}" "${DOC_ZIP_ROOT_DIR}"
pushd "${DOC_ZIP_ROOT}" 2>&1 > /dev/null

echo ============================================ creating ${DOC_ZIP_PATH}
echo ============================================ Create ${DOC_ZIP_PATH}
( zip -ry ${DOC_ZIP_PATH} ${REVISION} 2>&1 ) >> ${DOC_LOG}
if [[ -e ${DOC_LOG} ]]
then
Expand All @@ -191,7 +179,7 @@ fi
popd 2>&1 > /dev/null

# Built Artifacts:
echo ============================================== update ${ZIP_FILE}
echo ============================================== Update ${ZIP_FILE}
cp -R "${BUILT_PRODUCTS_DIR}"/* ${ZIP_SRCD}
cp ${README_F} ${RME_DEST}
cp ${LICENSEF} ${LIC_DEST}
Expand Down Expand Up @@ -231,7 +219,7 @@ rm -rf ${ZIP_SRCD}/*LinkMap*
rm -rf CouchbaseLite.framework/PrivateHeaders

# Zip:
echo ============================================== package ${ZIP_PATH}
echo ============================================== Package ${ZIP_PATH}
ZIP_LOG=${WORKSPACE}/doc_zip.log
if [[ -e ${ZIP_LOG} ]] ; then rm -f ${ZIP_LOG} ; fi

Expand All @@ -240,11 +228,11 @@ cd ${ZIP_SRCD}
if [[ -e ${ZIP_LOG} ]]
then
echo
echo "============================================ ${ZIP_LOG}"
echo ============================================== ${ZIP_LOG}"
echo ". . ."
tail ${LOG_TAIL} ${ZIP_LOG}
fi
LATESTBUILDS_CBL=http://latestbuilds.hq.couchbase.com/couchbase-lite-ios/${VERSION}${REL_STAGE}/${OS}/${REVISION}
echo ........................... uploading internally to ${LATESTBUILDS_CBL}
echo ........................... Uploading internally to ${LATESTBUILDS_CBL}
echo ============================================== `date`

0 comments on commit b511877

Please sign in to comment.