Files
2026-09-09 07:10:05 +02:00

31 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Invoked by ci-jvm only after tests, production smoke and manifest creation.
set -euo pipefail
root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
cd "$root"
if [[ ${WERKJOURNAL_CI_DEPLOY:-0} != 1 ]]; then
echo 'Automatic deployment disabled outside the configured CI job.'
exit 0
fi
if [[ ${branch:-} != main ]]; then
echo 'Automatic deployment only runs for the main branch.'
exit 0
fi
# Werkator binds this repository's persistent build home as /root in Werkdock.
export WERKJOURNAL_DEPLOY_KEY="${HOME}/.ssh/werkjournal_deploy"
export WERKJOURNAL_DEPLOY_HOST_KEYS="${HOME}/.ssh/werkjournal_known_hosts"
test -s "$WERKJOURNAL_DEPLOY_KEY"
test -s "$WERKJOURNAL_DEPLOY_HOST_KEYS"
git diff --quiet HEAD -- .
python3 - <<'PY'
import json, subprocess
from pathlib import Path
manifest = json.loads(Path('build/release/manifest.json').read_text())
head = subprocess.check_output(['git', 'rev-parse', 'HEAD'], text=True).strip()
if manifest['commit'] != head:
raise SystemExit('Release manifest does not match this build checkout')
PY
mkdir -p build/reports/deployment
# pipefail makes a failed deployment a failed Werkator build, even after rollback.
./tools/remote backend deploy --artifact build/release | tee build/reports/deployment/result.log