1- #! /bin/bash
1+ #! /usr/ bin/env bash
22#
33# Deploy artifacts (e.g. dmg, deb files) built by CI to downloads.mixxx.org.
44
5- set -eu -o pipefail
5+ set -Eeuo pipefail
66
77[ -z " ${SSH_HOST} " ] && echo " Please set the SSH_HOST env var." >&2 && exit 1
88[ -z " ${SSH_KEY} " ] && echo " Please set the SSH_KEY env var." >&2 && exit 1
@@ -15,15 +15,19 @@ set -eu -o pipefail
1515SSH=" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
1616GIT_BRANCH=" $( git rev-parse --abbrev-ref HEAD) "
1717DEST_PATH=" ${DESTDIR} /${GIT_BRANCH} /${OS} "
18- TMP_PATH=" ${DESTDIR} /.tmp/${UPLOAD_ID} "
18+ TMP_PATH=" ../.. /.tmp/${UPLOAD_ID} "
1919
20- echo " Deploying to $TMP_PATH , then to $DEST_PATH ."
20+ echo " Deploying to ${ TMP_PATH} , then to ${ DEST_PATH} ."
2121
22- # Start SSH agent
23- ssh-agent -a ${SSH_AUTH_SOCK} > /dev/null
22+ eval " $( ssh-agent -s) " > /dev/null
23+
24+ cleanup () {
25+ eval " $( ssh-agent -k) " > /dev/null
26+ }
27+ trap cleanup EXIT
2428
2529# Add private key to SSH agent
26- ssh-add - <<< " ${SSH_KEY}"
30+ ssh-add - <<< " ${SSH_KEY}" > /dev/null
2731
2832# realpath does not exist on macOS
2933command -v realpath > /dev/null 2>&1 || realpath () {
5054 popd
5155
5256 FILEEXT=" ${FILENAME##* .} "
57+
58+ # Ensure directories exist
59+ ${SSH} " ${SSH_USER} @${SSH_HOST} " " mkdir -p '${DEST_PATH} ' '${DEST_PATH} /${TMP_PATH} '"
5360
54- rsync -e " ${SSH} " --rsync-path=" mkdir -p ${TMP_PATH} && rsync" -r --delete-after " ${FILEPATH} " " ${FILEPATH_HASH} " " ${SSH_USER} @${SSH_HOST} :${TMP_PATH} "
55-
56- # Move from the temporary path to the final destination.
57- ${SSH} " ${SSH_USER} @${SSH_HOST} " << EOF
58- trap 'rm -rf "${TMP_PATH} "' EXIT
59- mkdir -p "${DEST_PATH} " &&
60- mv "${TMP_PATH} /${FILENAME} " "${TMP_PATH} /${FILENAME_HASH} " "${DEST_PATH} "
61- EOF
61+ rsync -e " ${SSH} " --partial --partial-dir=" ${TMP_PATH} " --delay-updates -r " ${FILEPATH} " " ${FILEPATH_HASH} " " ${SSH_USER} @${SSH_HOST} :${DEST_PATH} "
6262done
0 commit comments