ci: one queue for all of CI, nothing cancelled (#140)
Every workflow shared the concurrency group qemu. A group keeps one running and one waiting run, and a run that joins cancels the one waiting: Build runs 245 and 247 were cancelled at 0 s by PR 164's Acceptance runs. Captain Bob, 2026-11-11: "It should be global"; the runner has capacity 1. So the concurrency block is removed from all six workflows (a comment in each says why): with one runner at capacity 1 every job waits its turn in Gitea's queue and none is cancelled, and a runner-image rebuild still blocks the rest. CLAUDE.md's CI section corrected; FABRIC-3 XLVIII.19. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RzZgrf7V7Zk2iczBXDRbm
This commit is contained in:
+5
-2
@@ -358,8 +358,11 @@ present in `logs/`:
|
||||
**Corrected 2026-11-10** — this file previously named stale job IDs (`build-amd64-iso`,
|
||||
`build-aarch64-iso`, `build-riscv64-img`) and said "No QEMU boot step in CI."
|
||||
|
||||
Six workflows in `.gitea/workflows/`; all share a single `qemu` concurrency group
|
||||
(`cancel-in-progress: false`) so at most one run executes at a time:
|
||||
Six workflows in `.gitea/workflows/`. **One job at a time across all of CI, and none cancelled**
|
||||
(corrected 2026-11-11, #140 -- Captain Bob: "It should be global"): there is no concurrency group;
|
||||
the one runner (`starshipos-vps`) has capacity 1, so every job of every workflow waits its turn in
|
||||
Gitea's queue. The shared `qemu` group this file described kept only one waiting run, and each run
|
||||
that joined cancelled it:
|
||||
- **`acceptance.yml`** — PR gate into `master`: 3 QEMU boots (amd64/aarch64/riscv64)
|
||||
+ PC stick loaded high + `make -C v4 test-32`, all via `scripts/nightly.sh`; branch
|
||||
protection requires this check to pass before the merge button unlocks.
|
||||
|
||||
@@ -17,10 +17,10 @@ on:
|
||||
types: [opened, synchronize, reopened]
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: qemu # every workflow shares this one group: one run at a time,
|
||||
# a runner-image rebuild included (Captain Bob, 2026-11-07)
|
||||
cancel-in-progress: false
|
||||
# No concurrency group (Captain Bob, 2026-11-11, #140: "It should be global"). The one runner
|
||||
# (starshipos-vps) has capacity 1, so every job of every workflow waits its turn in Gitea's queue
|
||||
# and none is cancelled; a runner-image rebuild still blocks the rest (2026-11-07). A shared
|
||||
# concurrency group kept only one waiting run, and each run that joined cancelled it.
|
||||
|
||||
jobs:
|
||||
acceptance:
|
||||
|
||||
@@ -13,9 +13,10 @@ on:
|
||||
# the server the wikis share (Captain Bob, 2026-11-07)
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: qemu # every workflow shares this one group (Captain Bob, 2026-11-07: a
|
||||
cancel-in-progress: false # runner-image rebuild blocks other jobs, always): one run at a time
|
||||
# No concurrency group (Captain Bob, 2026-11-11, #140: "It should be global"). The one runner
|
||||
# (starshipos-vps) has capacity 1, so every job of every workflow waits its turn in Gitea's queue
|
||||
# and none is cancelled; a runner-image rebuild still blocks the rest (2026-11-07). A shared
|
||||
# concurrency group kept only one waiting run, and each run that joined cancelled it.
|
||||
|
||||
jobs:
|
||||
image:
|
||||
|
||||
@@ -14,9 +14,10 @@ on:
|
||||
- cron: '0 4 * * *' # 04:00 UTC, after the images (nightly.yml, 03:00)
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: qemu # every workflow shares this one group (Captain Bob, 2026-11-07: a
|
||||
cancel-in-progress: false # runner-image rebuild blocks other jobs, always): one run at a time
|
||||
# No concurrency group (Captain Bob, 2026-11-11, #140: "It should be global"). The one runner
|
||||
# (starshipos-vps) has capacity 1, so every job of every workflow waits its turn in Gitea's queue
|
||||
# and none is cancelled; a runner-image rebuild still blocks the rest (2026-11-07). A shared
|
||||
# concurrency group kept only one waiting run, and each run that joined cancelled it.
|
||||
|
||||
jobs:
|
||||
docs:
|
||||
|
||||
@@ -20,10 +20,10 @@ on:
|
||||
- cron: '0 3 * * *' # 03:00 UTC; the documents are at 04:00 (nightly-docs.yml)
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: qemu # every workflow shares this one group: one run at a time,
|
||||
# a runner-image rebuild included (Captain Bob, 2026-11-07)
|
||||
cancel-in-progress: false
|
||||
# No concurrency group (Captain Bob, 2026-11-11, #140: "It should be global"). The one runner
|
||||
# (starshipos-vps) has capacity 1, so every job of every workflow waits its turn in Gitea's queue
|
||||
# and none is cancelled; a runner-image rebuild still blocks the rest (2026-11-07). A shared
|
||||
# concurrency group kept only one waiting run, and each run that joined cancelled it.
|
||||
|
||||
jobs:
|
||||
nightly:
|
||||
|
||||
@@ -18,10 +18,10 @@ on:
|
||||
push:
|
||||
tags: ['v*']
|
||||
|
||||
concurrency:
|
||||
group: qemu # every workflow shares this one group: one run at a time,
|
||||
# a runner-image rebuild included (Captain Bob, 2026-11-07)
|
||||
cancel-in-progress: false
|
||||
# No concurrency group (Captain Bob, 2026-11-11, #140: "It should be global"). The one runner
|
||||
# (starshipos-vps) has capacity 1, so every job of every workflow waits its turn in Gitea's queue
|
||||
# and none is cancelled; a runner-image rebuild still blocks the rest (2026-11-07). A shared
|
||||
# concurrency group kept only one waiting run, and each run that joined cancelled it.
|
||||
|
||||
jobs:
|
||||
release:
|
||||
|
||||
@@ -17,9 +17,10 @@ on:
|
||||
paths: ['ci/runner-image/**', 'Makefile']
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: qemu # every workflow shares this one group (Captain Bob, 2026-11-07: a
|
||||
cancel-in-progress: false # runner-image rebuild blocks other jobs, always): one run at a time
|
||||
# No concurrency group (Captain Bob, 2026-11-11, #140: "It should be global"). The one runner
|
||||
# (starshipos-vps) has capacity 1, so every job of every workflow waits its turn in Gitea's queue
|
||||
# and none is cancelled; a runner-image rebuild still blocks the rest (2026-11-07). A shared
|
||||
# concurrency group kept only one waiting run, and each run that joined cancelled it.
|
||||
|
||||
jobs:
|
||||
image:
|
||||
|
||||
@@ -6547,3 +6547,21 @@ and memorize frequently so we can pick up where we left off").
|
||||
release was a pre-release; now it is not. The tag stays on `93828e0e`, its 13 assets unchanged;
|
||||
moving a tag was not an option (tags are sacred), and today's work ships as alpha.5.
|
||||
|
||||
### 19. #140: one queue for all of CI, nothing cancelled (2026-11-11)
|
||||
|
||||
- **Found again:** Build runs 245 and 247 (the board images and the v4 tests) were cancelled at 0 s on
|
||||
two pushes to PR 164's branch: the push queued Build in the shared `qemu` group, the PR's
|
||||
Acceptance run joined seconds later, and a group keeps one running and **one waiting** run -- the
|
||||
joining run cancelled the waiting one. The v4 tests were run by hand instead (79 programs, 0
|
||||
failures; `logs/20261111-193825/v4-test`).
|
||||
- **Ruled** (Captain Bob): "It should be global" -- one queue for all of CI. The runner
|
||||
(`starshipos-vps`) has capacity 1 (Captain Bob: "capacity is 1").
|
||||
- **Built:** the `concurrency:` block is gone from all six workflows, each with a comment saying why;
|
||||
`.claude/CLAUDE.md`'s CI section corrected. With one runner at capacity 1, every job of every
|
||||
workflow waits in Gitea's queue and none is cancelled; a runner-image rebuild still blocks the rest
|
||||
(2026-11-07). What changes: the runner takes **jobs**, not runs, so another workflow's job may run
|
||||
between two of Build's -- never beside one; one QEMU at a time holds.
|
||||
- **Left to Captain Bob:** the offline duplicate runner registration (id 1, also `starshipos-vps`) --
|
||||
removed, it can never take a job if it comes back. #140's "Done when" is met by this entry and the
|
||||
workflows' comments once it reaches `master`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user