docs(ops): CI verify-deploy semantics — runner_restarted, abandoned, merge-fires-push #5470
1 changed file+27−0
Modifieddocs/ops/OPERATIONS.md+27−0View fileUnifiedSplit
@@ -70,6 +70,33 @@ docker compose -f docker-compose.standalone.yml exec -T gluecron bun run db:migr
7070**Logs:** `journalctl -u gluecron-update` for the deploy itself;
7171`docker compose -f docker-compose.standalone.yml logs gluecron` for the app.
7272
73## CI on this repo — verify-deploy and run conclusions (2026-08-08)
74
75`.gluecron/workflows/deploy.yml` does not deploy (the timer does); it
76**verifies**: it polls `/api/version` until production serves the run's own
77commit. Green = "this exact commit is live." Red after 6 minutes = the
78update timer is stuck. It uses `wget` — the runner executes inside the app
79container, which ships no `curl`.
80
81Because the runner lives inside the app container, **a push-to-main run is
82always killed by the very deploy it verifies** (~40–90s in). The runner
83handles this itself:
84
85- On boot, runs left `running` by the replaced process are failed as
86 **`runner_restarted`** and — if less than 15 minutes old — requeued once
87 per (workflow, commit). The retry executes against the post-deploy world
88 and goes green. See `requeueRunsOrphanedByRestart` in
89 `src/lib/workflow-runner.ts`.
90- **`abandoned`** = the hour-cutoff reaper finalised a zombie the boot
91 sweep couldn't attribute to a restart. Not retried.
92
93Merges fire `on: push` workflows too: a server-side merge advances the base
94ref without a git push, so every merge site calls
95`enqueuePushWorkflowsForBranchAdvance` (`src/lib/push-workflow-sync.ts`)
96after flipping the PR to merged. Before 2026-08-08 that hook did not exist
97and `branches: [main]` workflows effectively never fired — main moves by
98PR merges here, not pushes.
99
73100## GitHub reality (2026-07-12)
74101
75102The old GitHub repo (`ccantynz-alt/Gluecron.com`) is NOT frozen and is
76103
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts