Skip to content

ci: don't cancel main/release CI runs on concurrency conflicts - #1083

Merged
grdsdev merged 1 commit into
mainfrom
fix/release-ci-cancel-in-progress
Jul 7, 2026
Merged

grdsdev merged 1 commit into
mainfrom
fix/release-ci-cancel-in-progress

Conversation

@grdsdev

@grdsdev grdsdev commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • The CI concurrency group ci-${{ github.ref }} with cancel-in-progress: true scoped to the branch ref meant every push to main shared one group — a follow-up push landing while a previous main CI run was still in flight would cancel it.
  • release.yml only invokes release-please when the triggering CI workflow_run concludes with success, so a cancelled run silently skips publishing any pending release.
  • This exact sequence happened on commit 102a146 (the release-please "chore(main): release 2.50.0" merge commit): PR build: adopt explicit import access-level modifiers #1074 merged 4 minutes later, cancelling that CI run (run 28808362154), so the Release workflow was skipped and v2.50.0 was never tagged/published.
  • Fix: only cancel in-progress runs for pull_request events (fast feedback on new commits to an open PR); pushes to main/release/* always run to completion so the release gate isn't broken by unrelated concurrent merges.

Recovery

Manually dispatched release.yml via workflow_dispatch to unblock the pending release — v2.50.0 is now tagged and published on commit 102a146.

Test plan

  • Verified root cause via gh api .../check-runs and gh run list history (cancelled CI run → skipped Release workflow_run)
  • Validated new YAML parses correctly
  • Confirm on the next PR that pushing a new commit to that PR still cancels the stale run (cancel-in-progress still active for pull_request)
  • Confirm on the next rapid back-to-back merge to main that both CI runs complete instead of the first being cancelled

cancel-in-progress applied to pushes on main too, so a rapid follow-up
merge could cancel the CI run for a release-please release commit.
Since the Release workflow only fires on a "success" conclusion, the
cancelled run silently skipped publishing the release (missed v2.50.0).
Now only PR runs get cancelled on new pushes.
@grdsdev
grdsdev requested a review from a team as a code owner July 6, 2026 17:11
@github-actions github-actions Bot added the ci/cd label Jul 6, 2026
@coveralls

Copy link
Copy Markdown

Coverage Report for CI Build 28809474833

Coverage remained the same at 83.168%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 9399
Covered Lines: 7817
Line Coverage: 83.17%
Coverage Strength: 37.08 hits per line

💛 - Coveralls

@grdsdev grdsdev changed the title fix(ci): don't cancel main/release CI runs on concurrency conflicts ci: don't cancel main/release CI runs on concurrency conflicts Jul 6, 2026
@grdsdev
grdsdev merged commit d771452 into main Jul 7, 2026
29 checks passed
@grdsdev
grdsdev deleted the fix/release-ci-cancel-in-progress branch July 7, 2026 08:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants