convoy: migrate CI to self-hosted axiom runners (briefs 1+2) #132
No reviewers
Labels
No labels
agent-context-drift
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: rstillwell/deckhearth#132
Loading…
Reference in a new issue
No description provided.
Delete branch "convoy/migrate-ci-to-self-hosted"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Moves 4 of 5 GitHub Actions workflows off
ubuntu-latest(billed) onto the newstwl-labsorg-level self-hosted pool (CT 111 axiom-runner-1..4) and rewires themigratejob to use CT 102's shared Postgres via per-run databases. See.convoys/migrate-ci-to-self-hosted.mdfor the full design (ratified architecture decisions, risks, follow-up briefs).What this PR does (briefs 1+2 combined)
ci.yml→runs-on: [self-hosted, axiom]: lint, schema-map-fresh, forbidden-patterns, migrate, test.migratejob rewire — drops the ephemeralservices.postgresblock (saved ~30s/run of image pull) and points at CT 102 Postgres viaHOMELAB_CI_POSTGRES_BASE_URL. Per-run DB name (ci_run_<run_id>_<run_attempt>) keeps parallel PRs isolated;if: always()drop step prevents leaked databases. Addssudo apt-get install -y postgresql-clientsince the runner image doesn't ship psql./opt/appdata/gha-runner/shared-cache/playwrighton the CT 111 bind mount; first PR primes, subsequent runs reuse (saves ~15-25s).ubuntu-latestper D4 in the convoy. Trades ~2 min/month of billed CI for resilience: weekly cron runs even when axiom is down.Prereqs (already done before opening this PR)
HOMELAB_CI_POSTGRES_BASE_URLrepo secret set on stwl-labs/tcg-vault — value ispostgres://deckhearth_ci:<pw>@192.168.68.102:5432deckhearth_ciPostgres role created on CT 102:CREATEDB, no superuser, no access to other apps' DBsstwl-labsSettings → Actions → Runners)stwl-labsorg Actions hardening: external collaborators require approval; runner group rejects public reposTest plan
After merge (or as soon as this PR's checks fire — the runners pick up immediately):
ci.ymljobs reportIn progress on axiom-runner-<N>in the PR's Checks tab within ~10s of dispatchmigratejob logs showpsql ... CREATE DATABASE "ci_run_<run_id>_<run_attempt>"followed bynpm run migrate upsuccess, thenDROP DATABASEin the cleanup step (even on failure)preview-smokeandvisual-diffjobs run on axiom (gate first, then heavy job). On first run Playwright pulls Chromium; on subsequent runs the cache hits and skips the download.pr-health-rollupruns on axiom and posts the sticky comment as before.agent-context-driftcron remains onubuntu-latest).ci_run_*databases on CT 102 after the run:ssh axiom 'pct exec 102 -- docker exec postgres psql -U postgres -c "\l"' | grep ci_run_returns nothing.Follow-up briefs (per convoy doc, deferred to separate PRs)
ci.yml) to preventruns-on: ubuntu-latestfrom drifting back outside theagent-context-drift.ymlallowlist.AGENTS.md§ 6/7 updates documenting the self-hosted runner story + the 1-line revert path (D5):sed -i 's/\[self-hosted, axiom\]/ubuntu-latest/g' .github/workflows/*.ymlfor when axiom is offline mid-PR-storm.cleanup-stale-ci-runs-cron— weekly cron on CT 102 to dropci_run_*DBs older than 7d (Risk #4 defensive mitigation; the per-runalways()cleanup should already handle the happy + failure paths).Made with Cursor
Pipeline Health
Build + CI gates
Build runs on Vercel; this CI runs lint and schema-map drift only (no duplicate build).
Role reports
See individual comments above for details. This rollup updates automatically.
The latest updates on your projects. Learn more about Vercel for GitHub.