diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..71647aa --- /dev/null +++ b/deploy.sh @@ -0,0 +1,77 @@ +#!/bin/bash -e + +cat <&2 + exit 1 +fi + +# Check that production branch has been pushed. +if [ -n "$(git log origin/production..production --oneline)" ]; then + echo "WARNING: not all changes to the production branch have been pushed." + echo "Press [ENTER] to continue deploying current origin/production, CTRL+C to abort." + read dummy +fi + +# SSH to cloud to pull all files in +function git_pull() { + PROJECT_NAME="$1" + BRANCH="$2" + REMOTE_ROOT="/data/git/${PROJECT_NAME}" + + echo "===================================================================" + echo "UPDATING FILES ON ${PROJECT_NAME}" + ${SSH} git -C ${REMOTE_ROOT} fetch origin ${BRANCH} + ${SSH} git -C ${REMOTE_ROOT} log origin/${BRANCH}..${BRANCH} --oneline + ${SSH} git -C ${REMOTE_ROOT} merge --ff-only origin/${BRANCH} +} + +git_pull pillar-python-sdk master +git_pull pillar production +git_pull blender-cloud production + +# Update the virtualenv +${SSH} -t docker exec ${DOCKER_NAME} /data/venv/bin/pip install -U -r ${REMOTE_ROOT}/requirements.txt --exists-action w + +# Notify Bugsnag of this new deploy. +echo +echo "===================================================================" +GIT_REVISION=$(${SSH} git -C ${REMOTE_ROOT} describe --always) +echo "Notifying Bugsnag of this new deploy of revision ${GIT_REVISION}." +BUGSNAG_API_KEY=$(${SSH} python -c "\"import sys; sys.path.append('${REMOTE_ROOT}'); import config_local; print(config_local.BUGSNAG_API_KEY)\"") +curl --data "apiKey=${BUGSNAG_API_KEY}&revision=${GIT_REVISION}" https://notify.bugsnag.com/deploy +echo + +# Wait for [ENTER] to restart the server +echo +echo "===================================================================" +echo "NOTE: If you want to edit config_local.py on the server, do so now." +echo "NOTE: Press [ENTER] to continue and restart the server process." +read dummy +${SSH} docker exec ${DOCKER_NAME} kill -HUP 1 +echo "Server process restarted" + +echo +echo "===================================================================" +echo "Deploy of ${PROJECT_NAME} is done." +echo "==================================================================="