@@ -55,52 +55,29 @@ jobs:
5555 WEBSITE_SSH_PORT : ${{ secrets.WEBSITE_SSH_PORT || '22' }}
5656 WEBSITE_SSH_USER : ${{ secrets.WEBSITE_SSH_USER }}
5757 WEBSITE_DEPLOY_PATH : ${{ secrets.WEBSITE_DEPLOY_PATH }}
58- WEBSITE_RSYNC_USE_SUDO : ${{ secrets.WEBSITE_RSYNC_USE_SUDO || 'false' }}
5958 run : |
6059 set -euo pipefail
6160
62- for variable in WEBSITE_SSH_HOST WEBSITE_SSH_PORT WEBSITE_SSH_USER WEBSITE_DEPLOY_PATH WEBSITE_RSYNC_USE_SUDO ; do
61+ for variable in WEBSITE_SSH_HOST WEBSITE_SSH_PORT WEBSITE_SSH_USER WEBSITE_DEPLOY_PATH; do
6362 if [ -z "${!variable}" ]; then
6463 echo "Missing ${variable} secret" >&2
6564 exit 1
6665 fi
6766 done
6867
69- if [ "${WEBSITE_RSYNC_USE_SUDO}" != "true" ] && [ "${WEBSITE_RSYNC_USE_SUDO}" != "false" ]; then
70- echo "WEBSITE_RSYNC_USE_SUDO must be either 'true' or 'false'" >&2
71- exit 1
72- fi
73-
7468 remote_path="$(printf '%q' "${WEBSITE_DEPLOY_PATH}")"
7569 ssh_options=(
7670 -i ~/.ssh/deploy_key
7771 -p "${WEBSITE_SSH_PORT}"
7872 -o IdentitiesOnly=yes
7973 -o StrictHostKeyChecking=yes
8074 )
81- rsync_options=(
82- -az
83- --delete
84- --itemize-changes
85- --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r
86- -e "ssh -i ~/.ssh/deploy_key -p ${WEBSITE_SSH_PORT} -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes"
87- )
8875
89- if [ "${WEBSITE_RSYNC_USE_SUDO}" = "true" ]; then
90- ssh "${ssh_options[@]}" "${WEBSITE_SSH_USER}@${WEBSITE_SSH_HOST}" "sudo mkdir -p ${remote_path}"
91- rsync_options+=(--rsync-path="sudo rsync")
92- else
93- ssh "${ssh_options[@]}" "${WEBSITE_SSH_USER}@${WEBSITE_SSH_HOST}" "mkdir -p ${remote_path}"
94- ssh "${ssh_options[@]}" "${WEBSITE_SSH_USER}@${WEBSITE_SSH_HOST}" "test -w ${remote_path}" || {
95- echo "Deploy path is not writable by ${WEBSITE_SSH_USER}: ${WEBSITE_DEPLOY_PATH}" >&2
96- echo "Remote permission diagnostics:" >&2
97- ssh "${ssh_options[@]}" "${WEBSITE_SSH_USER}@${WEBSITE_SSH_HOST}" \
98- "whoami; id; stat -c '%A %U %G %n' ${remote_path}; touch ${remote_path}/.deploy-write-test && rm ${remote_path}/.deploy-write-test" >&2 || true
99- echo "Fix by chowning the deploy path to ${WEBSITE_SSH_USER}, or set WEBSITE_RSYNC_USE_SUDO=true and allow passwordless sudo for rsync/mkdir." >&2
100- exit 1
101- }
102- fi
76+ ssh "${ssh_options[@]}" "${WEBSITE_SSH_USER}@${WEBSITE_SSH_HOST}" "mkdir -p ${remote_path}"
77+ ssh "${ssh_options[@]}" "${WEBSITE_SSH_USER}@${WEBSITE_SSH_HOST}" "test -w ${remote_path}"
10378
104- rsync "${rsync_options[@]}" \
79+ rsync -az --delete \
80+ --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r \
81+ -e "ssh -i ~/.ssh/deploy_key -p ${WEBSITE_SSH_PORT} -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes" \
10582 website/ \
10683 "${WEBSITE_SSH_USER}@${WEBSITE_SSH_HOST}:${WEBSITE_DEPLOY_PATH}/"
0 commit comments