diff --git a/BuildScripts/BuildFramework.sh b/BuildScripts/BuildFramework.sh index 5a3ce7065..fecaaae23 100755 --- a/BuildScripts/BuildFramework.sh +++ b/BuildScripts/BuildFramework.sh @@ -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 target sqlcipher_branch\n\n" + echo -e "\nuse: ${0} release_number build_number edition platform \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} @@ -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} @@ -88,10 +82,11 @@ 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 @@ -99,39 +94,27 @@ 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} @@ -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" @@ -171,7 +159,7 @@ 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}" @@ -179,7 +167,7 @@ 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 @@ -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} @@ -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 @@ -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`