mirror of
https://github.com/ConnectedHumber/Air-Quality-Web
synced 2024-11-25 06:53:00 +00:00
Add new conditional deploy action that only runs on the master branch
This commit is contained in:
parent
f7e502a84d
commit
d022708bd2
1 changed files with 72 additions and 0 deletions
72
build
72
build
|
@ -33,6 +33,13 @@ database_name="aq_db";
|
||||||
# Minimum major version of npm
|
# Minimum major version of npm
|
||||||
min_npm_version_major="6";
|
min_npm_version_major="6";
|
||||||
|
|
||||||
|
# Deployment settings
|
||||||
|
deploy_ssh_user="ci";
|
||||||
|
deploy_ssh_host="www.connectedhumber.org";
|
||||||
|
deploy_ssh_port="22";
|
||||||
|
|
||||||
|
deploy_root_dir="Air-Quality-Web";
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
# Check out the lantern git submodule if needed
|
# Check out the lantern git submodule if needed
|
||||||
|
@ -264,6 +271,12 @@ task_docs() {
|
||||||
task_ci() {
|
task_ci() {
|
||||||
tasks_run setup setup-dev
|
tasks_run setup setup-dev
|
||||||
NODE_ENV="production" tasks_run client docs archive;
|
NODE_ENV="production" tasks_run client docs archive;
|
||||||
|
|
||||||
|
if [ "${GIT_REF_NAME}" == "refs/heads/master" ]; then
|
||||||
|
tasks_run deploy;
|
||||||
|
else
|
||||||
|
echo "Not deploying, as this build wasn't on the master branch.";
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
task_archive() {
|
task_archive() {
|
||||||
|
@ -272,6 +285,65 @@ task_archive() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
task_deploy() {
|
||||||
|
stage_begin "Deploying to ${deploy_ssh_host}....";
|
||||||
|
if [ "${SSH_KEY_PATH}" == "" ]; then
|
||||||
|
stage_end 1 "Error: Can't find the SSH key as the environment variable SSH_KEY_PATH isn't set.";
|
||||||
|
fi
|
||||||
|
|
||||||
|
task_begin "Preparing upload";
|
||||||
|
|
||||||
|
subtask_begin "Creating temporary directory";
|
||||||
|
temp_dir="$(mktemp -d --suffix "-rhinoreminds-upload")";
|
||||||
|
subtask_end $? "Error: Failed to create temporary directory";
|
||||||
|
|
||||||
|
subtask_begin "Unpacking release files";
|
||||||
|
execute tar -xf "${ARCHIVE}/Air-Quality-Web.tar.gz" -C "${temp_dir}";
|
||||||
|
subtask_end $? "Failed to unpack release files";
|
||||||
|
|
||||||
|
# Define the directory whose contents we want to upload
|
||||||
|
source_upload_dir="${temp_dir}/RhinoReminds-Release";
|
||||||
|
|
||||||
|
task_end $?;
|
||||||
|
|
||||||
|
task_begin "Uploading release";
|
||||||
|
|
||||||
|
# Acquire an exclusive project-wide lock so that we only upload stuff one-at-a-time
|
||||||
|
exec 9<"${WORKSPACE}";
|
||||||
|
flock --exclusive 9;
|
||||||
|
# We have an extra : before the @ here to avoid the password prompt
|
||||||
|
|
||||||
|
# Actions:
|
||||||
|
# 1. Connect to remote server
|
||||||
|
# 2. Upload new files
|
||||||
|
# 3. Create data dir symlink
|
||||||
|
# 4. Swap in new directory
|
||||||
|
# 5. Delete old directory
|
||||||
|
lftp << SFTPCOMMANDS
|
||||||
|
set connect-program 'ssh -x -i "${SSH_KEY_PATH}" -P "${deploy_ssh_port}" -o "PasswordAuthentication=no"';
|
||||||
|
connect sftp://${deploy_ssh_user}:@${deploy_ssh_host};
|
||||||
|
|
||||||
|
mirror -R -P 3 -r ${source_upload_dir}/* "${deploy_root_dir}/www-new";
|
||||||
|
ln -s "${deploy_root_dir}/data" "${deploy_root_dir}/www-new/data";
|
||||||
|
|
||||||
|
mv "${deploy_root_dir}/www" "${deploy_root_dir}/www-old";
|
||||||
|
mv "${deploy_root_dir}/www-new" "${deploy_root_dir}/www";
|
||||||
|
rm -r "${deploy_root_dir}/www-old";
|
||||||
|
bye
|
||||||
|
SFTPCOMMANDS
|
||||||
|
|
||||||
|
exec 9>&- # Close file descriptor 9 and release the lock
|
||||||
|
|
||||||
|
task_end $? "Failed to upload release";
|
||||||
|
|
||||||
|
task_begin "Cleaning up";
|
||||||
|
execute rm -r "${temp_dir}";
|
||||||
|
task_end $?;
|
||||||
|
|
||||||
|
stage_end $? "Failed to deploy to ${deploy_ssh_host}.";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
|
||||||
tasks_run $@;
|
tasks_run $@;
|
||||||
|
|
Loading…
Reference in a new issue