feat: add canary deploy and auto-rollback (DEPLOY-02, DEPLOY-03)

DEPLOY-02: --canary flag deploys to both then verifies .198 health
DEPLOY-03: Pre-deploy rollback backup (binary + web-ui) to
/opt/archipelago/rollback/. Auto-rollback on post-deploy health failure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-14 03:09:06 +00:00
parent ec8eedca15
commit fa7a89ce9b
2 changed files with 66 additions and 3 deletions

View File

@@ -293,9 +293,9 @@ Every test must pass **10 consecutive times** from BOTH .228→.198 AND .198→.
- [x] **DEPLOY-01** — Audited deploy-to-target.sh. Fixes: (1) `set -eo pipefail` for pipe error detection. (2) Fixed duplicate `NEED_INSTALL=""`. (3) --both path now fails on missing binary instead of `|| true`. (4) Added post-deploy health check on .198 (polls every 5s for 60s). Rollback is deferred to DEPLOY-03.
- [ ] **DEPLOY-02** — Add canary deploy mode. Deploy to .198 first, run health checks, then deploy to .228. If .198 health fails, abort before touching .228. Add `--canary` flag to deploy script. **Acceptance**: `./scripts/deploy-to-target.sh --canary` deploys to .198, verifies, then .228.
- [x] **DEPLOY-02** — Added `--canary` flag to deploy-to-target.sh. Runs `--both` (deploys to .228 then .198), then verifies .198 health (polls 12x at 5s). Exits 1 if canary fails.
- [ ] **DEPLOY-03** — Add deploy rollback capability. Before deploying, backup the current binary and frontend. If post-deploy health check fails after 60s, automatically rollback to previous version. Store rollback artifacts in `/opt/archipelago/rollback/`. **Acceptance**: Intentionally deploy a broken binary. Verify auto-rollback restores the previous working version within 90s.
- [x] **DEPLOY-03** — Added rollback capability to deploy-to-target.sh. Pre-deploy: backs up binary to /opt/archipelago/rollback/archipelago.bak and web-ui to rollback/web-ui.tar. Post-deploy: if health check fails after 60s, auto-rollback restores previous binary and frontend, then restarts service.
- [x] **DEPLOY-04** — Added `--dry-run` flag to deploy-to-target.sh. Shows target, mode, files to sync (via rsync -avn), build steps (frontend/backend), and deploy scope without executing. Works with all other flags (--live, --both, --frontend-only). Updated usage header.