Skip to content

Commit 2130690

Browse files
committed
fix: debug deploy workflow
1 parent 3edd4ae commit 2130690

1 file changed

Lines changed: 34 additions & 10 deletions

File tree

.github/workflows/deploy-website.yml

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,25 +55,49 @@ 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' }}
5859
run: |
5960
set -euo pipefail
6061
61-
for variable in WEBSITE_SSH_HOST WEBSITE_SSH_PORT WEBSITE_SSH_USER WEBSITE_DEPLOY_PATH; do
62+
for variable in WEBSITE_SSH_HOST WEBSITE_SSH_PORT WEBSITE_SSH_USER WEBSITE_DEPLOY_PATH WEBSITE_RSYNC_USE_SUDO; do
6263
if [ -z "${!variable}" ]; then
6364
echo "Missing ${variable} secret" >&2
6465
exit 1
6566
fi
6667
done
6768
68-
ssh -i ~/.ssh/deploy_key \
69-
-p "${WEBSITE_SSH_PORT}" \
70-
-o IdentitiesOnly=yes \
71-
-o StrictHostKeyChecking=yes \
72-
"${WEBSITE_SSH_USER}@${WEBSITE_SSH_HOST}" \
73-
"mkdir -p '${WEBSITE_DEPLOY_PATH}'"
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+
74+
remote_path="$(printf '%q' "${WEBSITE_DEPLOY_PATH}")"
75+
ssh_options=(
76+
-i ~/.ssh/deploy_key
77+
-p "${WEBSITE_SSH_PORT}"
78+
-o IdentitiesOnly=yes
79+
-o StrictHostKeyChecking=yes
80+
)
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+
)
88+
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 "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
97+
exit 1
98+
}
99+
fi
74100
75-
rsync -az --delete \
76-
--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r \
77-
-e "ssh -i ~/.ssh/deploy_key -p ${WEBSITE_SSH_PORT} -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes" \
101+
rsync "${rsync_options[@]}" \
78102
website/ \
79103
"${WEBSITE_SSH_USER}@${WEBSITE_SSH_HOST}:${WEBSITE_DEPLOY_PATH}/"

0 commit comments

Comments
 (0)