Skip to content

Commit 4eb8e5d

Browse files
committed
Use rsyn --partial for atomic write.
1 parent f02f8f3 commit 4eb8e5d

File tree

1 file changed

+5
-9
lines changed

1 file changed

+5
-9
lines changed

.github/deploy.sh

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ set -Eeuo pipefail
1515
SSH="ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
1616
GIT_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
1717
DEST_PATH="${DESTDIR}/${GIT_BRANCH}/${OS}"
18-
TMP_PATH="${DESTDIR}/.tmp/${UPLOAD_ID}"
18+
TMP_PATH="../../.tmp/${UPLOAD_ID}"
1919

2020
echo "Deploying to ${TMP_PATH}, then to ${DEST_PATH}."
2121

@@ -54,13 +54,9 @@ do
5454
popd
5555

5656
FILEEXT="${FILENAME##*.}"
57+
58+
# Ensure directories exist
59+
${SSH} "${SSH_USER}@${SSH_HOST}" "mkdir -p '${DEST_PATH}' '${DEST_PATH}/${TMP_PATH}'"
5760

58-
rsync -e "${SSH}" --rsync-path="mkdir -p ${TMP_PATH} && rsync" -r --delete-after "${FILEPATH}" "${FILEPATH_HASH}" "${SSH_USER}@${SSH_HOST}:${TMP_PATH}"
59-
60-
# Move from the temporary path to the final destination.
61-
${SSH} "${SSH_USER}@${SSH_HOST}" << EOF
62-
trap 'rm -rf "${TMP_PATH}"' EXIT
63-
mkdir -p "${DEST_PATH}" &&
64-
mv "${TMP_PATH}/${FILENAME}" "${TMP_PATH}/${FILENAME_HASH}" "${DEST_PATH}"
65-
EOF
61+
rsync -e "${SSH}" --partial --partial-dir="${TMP_PATH}" --delay-updates -r "${FILEPATH}" "${FILEPATH_HASH}" "${SSH_USER}@${SSH_HOST}:${DEST_PATH}"
6662
done

0 commit comments

Comments
 (0)