Add tap-writer Forgejo runner + tap-bump token provisioning #194
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/infrastructure#194
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Stand up a dedicated Forgejo Actions runner whose only job is cross-repo Homebrew formula bumps into the coilyco-flight-deck tap(s). Companion to coilyco-flight-deck/ward#46. Implemented in PR #195.
Why a separate runner, not an Actions secret
Each Forgejo Actions job runs in an ephemeral container and only gets the auto-issued token, which is scoped to the running repo. A bump writes to a different repo (the tap), so it needs a real credential with tap write. Rather than put that token in Forgejo's Actions secret store, the runner carries it from SSM and hands it to git only through a credential helper at push time. The token never enters a job environment and never appears in logs. Isolating it on a labelled runner (
tap-writer) means a token this broad is not exposed to every repo's CI the way the instance build runner's jobs would be.This is reusable infra: one tap-writer runner and one org-scoped write token serve all of the ~8 planned taps.
Why host executor (no DinD)
A formula bump is just git + awk, no container builds. The host executor runs job steps directly in the runner container, so none of the DinD bridge churn that pins the build runner to kai-desktop-tower-wsl (#151 / #163) applies. Trade-off: the host executor has no node, so bump jobs must be pure-shell
run:steps with no JSuses:actions. ward#46 is written that way.Credential model
/forgejo/tap-bump-tokenholds awrite:repository-scoped Forgejo token (owning user can write every coilyco-flight-deck repo, so one token covers all taps).git credential get. Jobs never see it in env.Deliverables
deploy/forgejo-runner-tap-writer.yml- host-executor act_runner, labeltap-writer, no DinD sidecar, token mounted read-only + credential helper.scripts/provision-tap-bump-token.sh- mint thewrite:repositorytoken via the Forgejo API, store at SSM (no--overwrite, never echoes the value).docs/FEATURES.mdentry.Prerequisite
Before apply, the SSM param must exist. Run on a machine with Forgejo basic-auth creds, AWS creds for us-east-1, and coily:
Run order
./scripts/provision-tap-bump-token.sh(above).sudo k3s kubectl apply -f deploy/forgejo-runner-tap-writer.ymltap-writer:hostand picks up a job.tap-writerlabel existing).Verify points
forgejo/runnerbuilds disable the host executor for safety. If the runner will not runtap-writer:hostjobs, fall back to adocker://node:20-bookwormlabel (reintroduces a dockerd dependency).closes #194 via #195