fix(ci): stop PR builds cancelling each other and blocking on deploys#56
Open
yesnet0 wants to merge 1 commit into
Open
fix(ci): stop PR builds cancelling each other and blocking on deploys#56yesnet0 wants to merge 1 commit into
yesnet0 wants to merge 1 commit into
Conversation
hugo.yml put every run — deploys AND pull-request validation builds — into a single global concurrency group named "pages". GitHub allows one running and one pending run per group, so a third contender cancels the pending one. The visible consequence: when Dependabot opened 10 PRs at once, they all contended for that one slot and cancelled each other. Two got a build; eight were cancelled; the PRs sat for a week with no CI at all, which read as "checks not configured" rather than "checks were cancelled". Merging any of them would have been merging blind — and one of them is a Tailwind v3 -> v4 major that breaks the CSS build outright. Deploys still serialize on "pages" (only one Pages deployment can be in flight). PR builds now get a per-ref group, so they neither cancel each other nor contend with a production deploy. Superseded PR builds cancel; deploys never do.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The bug
hugo.ymlputs every run — production deploys and pull-request validation builds — into a single global concurrency group:GitHub permits one running and one pending run per concurrency group. A third contender cancels the pending one.
What that actually cost us
Dependabot opened 10 PRs on 2026-07-05. They all contended for that single slot and cancelled each other. The result:
That last part is the dangerous bit: "cancelled" renders as "checks not configured", not as "checks failed". It reads like the repo has no CI rather than like CI was silently starved — so the natural next move is to merge them, which would be merging blind into disclose.io. One of those 10 (#36) bumps Tailwind 3 → 4, a breaking major: v4 drops the CLI binary that
build:cssinvokes vianpx tailwindcss, so it takes the CSS build out.The fix
Split the groups by event:
pushtomain) keep serializing onpages— only one GitHub Pages deployment can be in flight, so that constraint is real.pages-pr-<ref>), so they neither cancel each other nor queue behind a production deploy.cancel-in-progressis nowtruefor PRs only — a superseded PR build should be cancelled; a deploy never should.After this merges
The 10 open Dependabot PRs will get real CI for the first time. Expect several to go red — that is the point. Nothing should be merged into this repo until they do.
Found during a maintenance pass on the disclose.io org, 2026-07-12.