| Step | Arguments | | | Status |
|---|
| Start of Pipeline - (28 sec in block) | | | | |
| node - (27 sec in block) | | | | |
| node block - (26 sec in block) | | | | |
| stage - (0.98 sec in block) | Declarative: Checkout SCM | | | |
| stage block (Declarative: Checkout SCM) - (0.86 sec in block) | | | | |
| checkout - (0.81 sec in self) | | | | |
| withEnv - (25 sec in block) | GIT_BRANCH, GIT_COMMIT, GIT_PREVIOUS_COMMIT, GIT_PREVIOUS_SUCCESSFUL_COMMIT, GIT_URL | | | |
| withEnv block - (25 sec in block) | | | | |
| withEnv - (25 sec in block) | APP_ROOT, SSH_OPTS, DEPLOY_USER, APP_NAME, DEPLOY_HOST | | | |
| withEnv block - (25 sec in block) | | | | |
| timeout - (25 sec in block) | | | | |
| timeout block - (25 sec in block) | | | | |
| timestamps - (25 sec in block) | | | | |
| timestamps block - (25 sec in block) | | | | |
| stage - (1.4 sec in block) | Checkout | | | |
| stage block (Checkout) - (1.3 sec in block) | | | | |
| checkout - (0.57 sec in self) | | | | |
| script - (0.44 sec in block) | | | | |
| script block - (0.38 sec in block) | | | | |
| sh - (0.34 sec in self) | git rev-parse --short HEAD | | | |
| sh - (0.27 sec in self) | echo "Deploying $RELEASE_ID from $(git log -1 --pretty=%s)" | | | |
| stage - (0.71 sec in block) | Guard: main only | | | |
| stage block (Guard: main only) - (0.61 sec in block) | | | | |
| stage - (1.4 sec in block) | Ship source to target | | | |
| stage block (Ship source to target) - (1.4 sec in block) | | | | |
| sh - (1.3 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 - (20 sec in block) | Build, health-check and swap | | | |
| stage block (Build, health-check and swap) - (20 sec in block) | | | | |
| sh - (20 sec in self) |
set -eu
ssh ${SSH_OPTS} ${DEPLOY_USER}@${DEPLOY_HOST} "RELEASE_ID=${RELEASE_ID} bash ${RELEASE_DIR}/deploy/deploy.sh"
| | | |
| stage - (0.95 sec in block) | Smoke test | | | |
| stage block (Smoke test) - (0.84 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 - (64 ms in block) | Declarative: Post Actions | | | |
| stage block (Declarative: Post Actions) - (39 ms in block) | | | | |
| echo - (13 ms in self) | Deployed 2-679906e to 192.168.12.81:/var/www/blut24.com/web/current | | | |