Skip to content

ci: give each dev push its own Tests run - #145

Merged
raiseCatError merged 1 commit into
devfrom
infra/ci-dev-push-concurrency
Nov 3, 2026
Merged

raiseCatError merged 1 commit into
devfrom
infra/ci-dev-push-concurrency

Conversation

@raiseCatError

Copy link
Copy Markdown
Owner

Problem. tests.yml grouped every run by ref with cancel-in-progress: true. When PRs merged into dev close together on 2026-11-03, the full push runs for #143 (0de79321) and #144 (b12143a1) were cancelled. The next run, for the #140 docs merge, correctly skipped the app jobs, so dev's new code had no full push run. A manual rerun of run 41680042746 then passed.

Change (only the concurrency block):

group: ${{ github.event_name == 'push' && github.ref == 'refs/heads/dev' && format('tests-dev-{0}', github.sha) || format('tests-{0}', github.ref) }}
cancel-in-progress: ${{ !(github.event_name == 'push' && github.ref == 'refs/heads/dev') }}
  • Every push to dev gets its own group, keyed by commit SHA, and is never cancelled.
  • PRs, main and release/** are unchanged: same group by ref, and superseded runs are still cancelled.
  • Unchanged: job names (the required checks mac, conventional, release-tooling, android), permissions (contents: read), the classifier and every fail-closed rule.
  • Trade-off: busy dev merge streaks use more runner time, because every code merge now finishes its full run. Docs-only merges still skip the app jobs.

Validation

  • GitHub's own expression evaluator (@actions/expressions 0.3.61) on representative events:
    • Two pushes to the same PR share tests-refs/pull/150/merge and cancel.
    • Another PR gets its own group.
    • Two dev merges get separate tests-dev-<sha> groups with cancel=false.
    • main, release/2.1.0 and a dev2 lookalike stay tests-<ref> with cancel=true.
  • Classification, with the step's script run against synthetic commits on this branch:
    • Docs and issue-form merges to dev skip the app jobs.
    • Code, workflow, classifier, unknown-path and multi-commit pushes to dev run full CI, as do docs pushes to main and release/*, and this workflow-changing PR.
  • check-release-workflows.rb reports every workflow fail-closed, and the classifier unit tests pass.

This PR's own CI is full, because it changes a workflow.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
@raiseCatError
raiseCatError marked this pull request as ready for review November 3, 2026 18:29
@raiseCatError
raiseCatError merged commit 599d55e into dev Nov 3, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant