Repository navigation
ci: one live run per PR ref on the four core workflows that had no concurrency group - #3734
Conversation
…and homebrew Four PR-triggered workflows carried no concurrency block, so a push to a PR branch never cancelled the run it superseded — measured 2026-09-08 while auditing why superseded runs were not self-killing. Same group shape as dotnet-test.yml: main and the merge queue keyed per commit (never cancelled), every other ref cancels in progress.
There was a problem hiding this comment.
🟡 Changes recommended
The new concurrency snippet’s comment and cancellation logic are not aligned with merge-queue and workflow_dispatch semantics (and is misleading in workflows that don’t run on merge_group).
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds concurrency groups to the remaining PR-triggered core workflows that weren’t self-cancelling superseded runs, reducing wasted runner time by ensuring only the latest run per PR ref continues while keeping main runs non-cancellable.
Changes:
- Add a
concurrency:block tohosting-operator.yml,homebrew.yml,clients.yml, andchart-gate.yml. - Key
mainpushes by commit SHA to avoid cross-commit cancellation onmain.
File summaries
| File | Description |
|---|---|
| .github/workflows/hosting-operator.yml | Adds concurrency grouping/cancellation for PR refs and main pushes. |
| .github/workflows/homebrew.yml | Adds concurrency grouping/cancellation for PR refs and main pushes. |
| .github/workflows/clients.yml | Adds concurrency grouping/cancellation for PR refs and main pushes. |
| .github/workflows/chart-gate.yml | Adds concurrency grouping/cancellation for PR refs and main pushes. |
Review details
- Files reviewed: 4/4 changed files
- Comments generated: 4
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| # One live run per ref: a newer push to the same PR branch cancels the run it supersedes; main and | ||
| # the merge queue never cancel (each main push is its own group, keyed on the commit). | ||
| concurrency: | ||
| group: hosting-operator-${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.sha || github.ref }} | ||
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} |
| # One live run per ref: a newer push to the same PR branch cancels the run it supersedes; main and | ||
| # the merge queue never cancel (each main push is its own group, keyed on the commit). | ||
| concurrency: | ||
| group: chart-gate-${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.sha || github.ref }} | ||
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} |
| # One live run per ref: a newer push to the same PR branch cancels the run it supersedes; main and | ||
| # the merge queue never cancel (each main push is its own group, keyed on the commit). | ||
| concurrency: | ||
| group: clients-${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.sha || github.ref }} | ||
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} |
| # One live run per ref: a newer push to the same PR branch cancels the run it supersedes; main and | ||
| # the merge queue never cancel (each main push is its own group, keyed on the commit). | ||
| concurrency: | ||
| group: homebrew-${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.sha || github.ref }} | ||
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} |
Test Results (shard 1)494 tests 494 ✅ 35s ⏱️ Results for commit 6120a5e. |
Test Results (shard 3)1 079 tests 1 079 ✅ 1m 36s ⏱️ Results for commit 6120a5e. |
Test Results (shard 0)254 tests 254 ✅ 2m 18s ⏱️ Results for commit 6120a5e. |
Test Results (shard 4)1 669 tests 1 475 ✅ 2m 7s ⏱️ Results for commit 6120a5e. |
Test Results (shard 5) 5 files 5 suites 2m 57s ⏱️ Results for commit 6120a5e. |
Test Results (shard 2)1 208 tests 1 208 ✅ 4m 20s ⏱️ Results for commit 6120a5e. |
Test Results 16 files 16 suites 13m 55s ⏱️ Results for commit 6120a5e. |
Measured 2026-09-08 while checking why superseded runs were not self-cancelling fleet-wide:
chart-gate.yml,clients.yml,hosting-operator.ymlandhomebrew.ymlare the four PR-triggered core workflows with noconcurrency:block, so a push to a PR branch left the previous run burning a runner to completion. Every other PR workflow in the fleet already cancels superseded runs per ref.Same group shape as
dotnet-test.yml: amainpush (and a merge-queue ref) is keyed on its own commit and is never cancelled; every other ref cancels in progress.Pairs-with: none — CI wiring only, no public surface.