#!/bin/bash set -e set -u : ${CI_BRANCH=""} : ${UPLOAD_LATEST=""} # cd to app root CWD=$(dirname $0) if [[ `basename $(pwd)` = 'scripts' ]]; then cd ../ else cd `dirname $CWD` fi # ------------------------------------- # Execute something and exit if it fails function runCmd() { $@ if [[ $? -ne 0 ]]; then echo "Command: $@ failed" exit 2 fi } function printHelp() { cat 1>&2 <&2 printHelp exit 1 ;; esac done # UPLOAD_LATEST=true is set by Drone for auto upload to CDN if [[ "${BRANCH}" == "master" ]] && [[ "${UPLOAD_LATEST}" == "true" ]]; then UPLOAD=2 LATEST=1 fi # Sanity checking if [[ $LATEST -eq 1 ]] && [[ $TAG -eq 1 ]]; then echo "You can't tag latest." exit 1 fi if ( [[ $TAG -eq 1 ]] || [[ $UPLOAD -ne 0 ]] ) && [[ "${BRANCH}" != "master" ]]; then echo "You can only tag or upload the master branch (you are on '${BRANCH}')." exit 1 fi if [[ $LATEST -eq 1 ]]; then VERSION="latest" else VERSION=${PKG_VERSION} fi ENVIRONMENT="production" BUILD_DIR="dist/static/${VERSION}" CDN="cdn.rancher.io/ui" URL="/static" GS_URL="gs://${CDN}" CACHE="Cache-Control:no-cache,must-revalidate" GZIP="html,js,css,xml,txt,map,svg,ttf,woff,woff2" echo "Branch: ${BRANCH}" if [[ "${VERSION}" != "${PKG_VERSION}" ]]; then echo "Package Version: ${PKG_VERSION}" fi echo "Version: ${VERSION}" echo "Build Dir: ${BUILD_DIR}" echo "Options: Latest=${LATEST}, Tag=${TAG}, Upload=${UPLOAD}" echo "Current Directory: $(pwd)" echo "Testing..." runCmd ./node_modules/.bin/ember test echo "Done Testing." echo "Building Static..." RANCHER_ENDPOINT="" BASE_URL="${URL}" BASE_ASSETS="//${CDN}/${VERSION}" runCmd ./node_modules/.bin/ember build --environment=${ENVIRONMENT} --output-path=${BUILD_DIR} # Create a file containing the version echo "${PKG_VERSION}" > ${BUILD_DIR}/VERSION.txt # Replace the version token in the static file that cattle serves up sed -i.bak s/VERSION/${VERSION}/g "${BUILD_DIR}/static/index.html" if [[ $TAG -eq 1 ]]; then runCmd git tag v${VERSION} runCmd git push --tags fi # For use on your laptop, manually if [[ $UPLOAD -eq 1 ]]; then echo "Uploading..." if [[ $LATEST -eq 1 ]]; then runCmd gsutil -h "${CACHE}" -m cp -z "${GZIP}" -R ${BUILD_DIR} "${GS_URL}/_latest" runCmd gsutil -h "${CACHE}" -m rsync -c -r -d "${GS_URL}/_latest" "${GS_URL}/latest" runCmd gsutil rm -a -f -R "${GS_URL}/_latest" else runCmd gsutil -m cp -z "${GZIP}" -R ${BUILD_DIR} ${GS_URL} fi fi # For use from Drone, automatically if [[ $UPLOAD -eq 2 ]]; then LATEST_DIR="$(pwd)/${BUILD_DIR}" echo "Updating latest ($LATEST_DIR) thru Docker..." # Upload new files, with gzip headers (rsync doesn't have this) runCmd docker run --rm -v $LATEST_DIR:/latest google/cloud-sdk gsutil -h "${CACHE}" -m cp -z "${GZIP}" -R /latest "${GS_URL}/_latest" # Rsync new files into latest dif runCmd docker run --rm -v $LATEST_DIR:/latest google/cloud-sdk gsutil -h "${CACHE}" -m rsync -c -r -d "${GS_URL}/_latest" "${GS_URL}/latest" # Remove temp dir runCmd docker run --rm -v $LATEST_DIR:/latest google/cloud-sdk gsutil rm -a -f -R "${GS_URL}/_latest" fi