CI has no concurrency group — superseded runs are never cancelled #189
Labels
No labels
area:ai
area:ci-cd
area:notifications
area:observability
area:public-pages
backlog
bug
duplicate
enhancement
help wanted
invalid
question
type:decision
type:feature
type:infra
type:maintenance
type:security
v1.0.1
v1.1.0
v1.2.0
v1.3.0
v2.0.0
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/WeatherBot#189
Loading…
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?
.forgejo/workflows/ci.ymland.forgejo/workflows/cd.ymlhave no top-levelconcurrency:key, so every push to a branch or PR starts a fresh run while the previous run for that same ref continues to completion.Context
The shared Forgejo Actions runners are saturated — see Rhoving/iac-repo#371. Measured 2026-08-29: all six fleet-wide job slots were occupied, with three repos pushing at once, and jobs turning over in roughly 1–2 minutes. Runner capacity is shared across every repo on this instance, so superseded runs here are directly other repos' queue wait.
Several repos on this instance already set a top-level concurrency group (
Quest-Board,Radome,TeaLeaves,ChoreMachine,HomeBooks,BatteryStorageCalculator). These workflows do not.Affected
.forgejo/workflows/ci.yml(pull_request only, job: test).forgejo/workflows/cd.yml(push-to-main, job: test)Proposed
Include
github.workflowin the group so separate workflows in the same repo don't cancel each other.Note on publish/release workflows: where a workflow pushes images or artifacts, prefer
cancel-in-progress: false. Cancelling a half-completed publish is worse than letting it finish; the group still prevents two from running at once.⚠️ Before enabling
cancel-in-progress: true, check that any teardown this CI relies on runs under cancellation (if: always()). Cancelled jobs skip normal cleanup steps. Leakedpostgres:18service containers aged 7–11h were found inside the runners' DinD daemons on 2026-08-29 and had to be removed by hand (Rhoving/iac-repo#292) — that failure mode gets more frequent, not less, if cancellation is enabled without cleanup that survives it.Definition of done
concurrency:added to.forgejo/workflows/ci.ymland.forgejo/workflows/cd.ymlRefs Rhoving/iac-repo#371