From d00d7d2f1dbe2494f33eb9a8b06476f7a7c172f0 Mon Sep 17 00:00:00 2001 From: svemagie <869694+svemagie@users.noreply.github.com> Date: Sun, 8 Mar 2026 02:06:41 +0100 Subject: [PATCH] fix(deploy): preflight before restart and robust startup polling --- .github/workflows/deploy.yml | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 548d006c..013f9a3e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -34,22 +34,35 @@ jobs: port: 222 script: | set -eu + restart_log=/tmp/indiekit-restart.log # Update code and dependencies as indiekit user inside the jail. sudo bastille cmd node sh -lc 'cd /usr/local/indiekit && su -l indiekit -c "git pull origin main && npm ci"' + # Validate startup prerequisites before touching the running service. + sudo bastille cmd node sh -lc 'cd /usr/local/indiekit && su -l indiekit -c "NODE_ENV=production node scripts/preflight-mongo-connection.mjs"' + # Restart asynchronously to avoid hanging SSH sessions when rc scripts keep stdout open. - sudo bastille cmd node sh -lc 'nohup service indiekit restart >/tmp/indiekit-restart.log 2>&1 ${restart_log} 2>&1 /dev/null 2>&1; then + echo "Indiekit restart triggered and process is running." + exit 0 + fi - if sudo bastille cmd node pgrep -f "indiekit serve" >/dev/null 2>&1; then - echo "Indiekit restart triggered and process is running." - else - echo "Indiekit process not found after restart." - sudo bastille cmd node sh -lc 'tail -n 80 /tmp/indiekit-restart.log || true' - exit 1 - fi + attempts=$((attempts + 1)) + sleep 2 + done + + echo "Indiekit process not found after restart." + sudo bastille cmd node sh -lc "tail -n 120 ${restart_log} || true" + sudo bastille cmd node sh -lc 'service indiekit onestatus || true' + sudo bastille cmd node sh -lc 'cd /usr/local/indiekit && su -l indiekit -c "NODE_ENV=production node scripts/preflight-mongo-connection.mjs" || true' + exit 1 # Optionally reload nginx on web jail # - name: Reload nginx # uses: appleboy/ssh-action@v0.1.10