| Step | Arguments | | | Status |
|---|
| Start of Pipeline - (29 sec in block) | | | | |
| node - (29 sec in block) | | | | |
| node block - (29 sec in block) | | | | |
| stage - (0.82 sec in block) | Declarative: Checkout SCM | | | |
| stage block (Declarative: Checkout SCM) - (0.79 sec in block) | | | | |
| checkout - (0.78 sec in self) | | | | |
| withEnv - (28 sec in block) | GIT_BRANCH, GIT_COMMIT, GIT_PREVIOUS_COMMIT, GIT_PREVIOUS_SUCCESSFUL_COMMIT, GIT_URL | | | |
| withEnv block - (28 sec in block) | | | | |
| withEnv - (28 sec in block) | APP_ROOT, SSH_OPTS, DEPLOY_USER, APP_NAME, DEPLOY_HOST | | | |
| withEnv block - (28 sec in block) | | | | |
| timeout - (28 sec in block) | | | | |
| timeout block - (28 sec in block) | | | | |
| timestamps - (28 sec in block) | | | | |
| timestamps block - (28 sec in block) | | | | |
| stage - (1.1 sec in block) | Checkout | | | |
| stage block (Checkout) - (1.1 sec in block) | | | | |
| checkout - (0.51 sec in self) | | | | |
| script - (0.32 sec in block) | | | | |
| script block - (0.29 sec in block) | | | | |
| sh - (0.28 sec in self) | git rev-parse --short HEAD | | | |
| sh - (0.26 sec in self) | echo "Deploying $RELEASE_ID from $(git log -1 --pretty=%s)" | | | |
| stage - (87 ms in block) | Guard: main only | | | |
| stage block (Guard: main only) - (59 ms in block) | | | | |
| stage - (1.1 sec in block) | Ship source to target | | | |
| stage block (Ship source to target) - (1 sec in block) | | | | |
| sh - (1 sec in self) |
set -eu
SSH="ssh ${SSH_OPTS}"
$SSH ${DEPLOY_USER}@${DEPLOY_HOST} "mkdir -p ${RELEASE_DIR}"
# Ship the working tree, not a git clone — the target needs no git and
# no GitHub credentials. Excludes are the things the target builds or
# owns itself; data/ in particular is a symlink to shared/ on the host
# and must never be overwritten by the repo copy.
rsync -az --delete -e "$SSH" --exclude '.git' --exclude 'node_modules' --exclude '.nuxt' --exclude '.output' --exclude 'data/*.db' --exclude 'data/*.db-*' --exclude '.env' ./ ${DEPLOY_USER}@${DEPLOY_HOST}:${RELEASE_DIR}/
| | | |
| stage - (24 sec in block) | Build, health-check and swap | | | |
| stage block (Build, health-check and swap) - (24 sec in block) | | | | |
| sh - (24 sec in self) |
set -eu
ssh ${SSH_OPTS} ${DEPLOY_USER}@${DEPLOY_HOST} "RELEASE_ID=${RELEASE_ID} bash ${RELEASE_DIR}/deploy/deploy.sh"
| | | |
| stage - (0.86 sec in block) | Smoke test | | | |
| stage block (Smoke test) - (0.83 sec in block) | | | | |
| sh - (0.81 sec in self) |
set -eu
# Independent of deploy.sh's own check: assert the LIVE symlink really
# points at this build and that the site answers through it.
ssh ${SSH_OPTS} ${DEPLOY_USER}@${DEPLOY_HOST} "
set -eu
live=\$(basename \$(readlink -f ${APP_ROOT}/current))
[ \"\$live\" = \"${RELEASE_ID}\" ] || { echo \"web -> \$live, expected ${RELEASE_ID}\"; exit 1; }
port=\$(grep -E '^NITRO_PORT=' /var/www/blut24.com/private/blut24-landing/shared/.env | cut -d= -f2 || echo 3002)
code=\$(curl -s -o /dev/null -w '%{http_code}' -m 10 http://127.0.0.1:\$port/)
[ \"\$code\" = \"200\" ] || { echo \"health check returned \$code\"; exit 1; }
echo \"smoke OK: \$live on :\$port\"
"
| | | |
| stage - (48 ms in block) | Declarative: Post Actions | | | |
| stage block (Declarative: Post Actions) - (29 ms in block) | | | | |
| echo - (9 ms in self) | Deployed 15-49f3d63 to 192.168.12.81:/var/www/blut24.com/web/current | | | |