forgejo-actions runners wedged in Terminating - no CI on main pushes #215
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#215
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?
Both Forgejo Actions runner pods are wedged in
Terminating, so no CI task is being claimed for pushes tomain.Observed
Both runner pods sit at 1/2 ready,
Terminatingfor ~5.5h with 6-10 restarts.coily ops forgejo actions task list --repo coilyco-flight-deck/infrastructureshows the newest registered run is8eb40580(a commit not even in currentmainhistory). Every push tomaintoday - including #208 (02909ac) and #209 (fc50503) - has zero CI runs.Impact
The
lint+Scan for secretsjobs (.forgejo/workflows/lint.yml,trufflehog.yml) never fire, so the per-push CI verification in AGENTS.md cannot complete. Code still lands clean (pre-commit mirrors the CI lint job exactly), but the CI signal is dark.Likely fix
Force-delete the stuck
Terminatingrunner pods so the StatefulSet respawns them:Then re-run a no-op push or re-trigger to confirm tasks are claimed again. If they re-wedge, check
deploy/forgejo-runner.yml(the1/2ready suggests one sidecar - likely the dind or the runner container - is failing its probe / crash-looping;kubectl describe/logson the new pods will say which).Verify after fix
coily ops forgejo actions task list --repo coilyco-flight-deck/infrastructureshould showlint+Scan for secretsruns for commitfc50503.Update: the runner fix is blocked on a kube-apiserver outage.
coily ops kubectl get pods -n forgejosucceeded ~2 min before this, but the cluster API now returnsUnable to connect to the server: Bad Gatewayon every call (3+ retries + the force-delete). The Bad Gateway means the ingress/tailscale proxy is up but the upstream apiserver is unreachable - so this is broader than the runners, and likely the same root cause that wedged them.The planned fix (
coily ops kubectl delete pod -n forgejo forgejo-runner-0 forgejo-runner-1 --force --grace-period=0) could not run. Once the apiserver is reachable again, retry the delete, then verifylint+Scan for secretsruns appear forfc50503.This probably needs hands-on kai-server access (SSH
kai@kai-server, checkk3s/systemctl status k3s, apiserver logs) rather than remote kubectl.Status update (2026-06-06) - the symptom has moved on.
The apiserver
Bad Gatewaycleared after Kai's 06-05 power cycle of kai-server (coily ops kubectlcalls succeed again). The runners are no longerTerminatingeither - but they still don't run, for a new reason:describereason:Node state:
kai-server- Ready (control-plane)kai-macbook-pro-vm- NotReady,SchedulingDisabledkai-desktop-tower-wsl- NotReadySo the regular runners'
local-pathPVC is pinned to a node that is now NotReady, and they can't reschedule onto kai-server (volume node affinity conflict). The blocker is now node recovery, not the pod wedge.Suggested fix
Either bring
kai-macbook-pro-vm/kai-desktop-tower-wslback to Ready, or (if that data is disposable) delete + recreate the strandedforgejo-runnerPVC so it binds on kai-server. Both are on-box / hands-on.Note
A separate fault, the dedicated tap-writer runner, was found during this:
forgejo-runner-tap-writer-0CrashLoopBackOff exit 99, tracked in #249 with fix PR #250. Not the same root cause as this issue.Current diagnosis is also on o2r channel FQT7 (event 126).