Skip to content

ci(PLT-761): cancel superseded integration-test runs and defer Autobahn matrix to merge queue#3639

Open
amir-deris wants to merge 4 commits into
mainfrom
amir/plt-761-reduce-ci-wall-clock-time
Open

ci(PLT-761): cancel superseded integration-test runs and defer Autobahn matrix to merge queue#3639
amir-deris wants to merge 4 commits into
mainfrom
amir/plt-761-reduce-ci-wall-clock-time

Conversation

@amir-deris

@amir-deris amir-deris commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

What

Two changes to integration-test.yml aimed at reducing CI wall-clock under ubuntu-large runner contention (PLT-761):

  1. Cancel superseded runs. Added a concurrency block with cancel-in-progress: true, mirroring the pattern already in go-test.yml. The group key uses github.sha for push events and github.ref otherwise, so a new push to a PR branch cancels the prior ~40-job matrix instead of leaving it running to completion, while main/release builds (keyed on sha) are never cancelled.

  2. Defer the full Autobahn matrix to the merge queue. The 11 Autobahn … matrix entries are GIGA consensus-mode duplicates of their non-autobahn siblings (AUTOBAHN=true GIGA_EXECUTOR=true GIGA_STORAGE=true GIGA_OCC=true). Each is tagged merge_only: true, and the integration-tests job now carries a per-combination if that skips those entries on pull_request while still running them on merge_group and push. Skipped combinations consume no runner.

Why

go-test.yml already cancels superseded runs, but integration-test.yml had no concurrency block, so every push to a PR branch left the prior full matrix running. Under ubuntu-large contention this starves the queue and inflates everyone's effective wall-clock.

Separately, ~1/3 of the integration matrix is Autobahn variants. The underlying module logic is already covered by the non-autobahn runs on every PR; the autobahn entries add consensus-mode-specific coverage. Deferring the full set to the merge queue removes ~11 ubuntu-large jobs from each PR run.

Coverage safety

  • A smoke of Autobahn coverage still runs on every PR via the dedicated autobahn-integration-tests ("Autobahn Basic") job, which is left untouched.
  • The full Autobahn matrix still runs in the merge queue (merge_group) before any code lands on main, so no regression signal is lost on the path to main — PRs just get faster feedback.
  • No change needed to integration-test-check: integration-tests's aggregate result stays success on PRs (the 22 non-autobahn combinations still run; partial skips within a matrix don't downgrade the aggregate), and the autobahn smoke job still runs.

Effect

  • PRs: ~11 fewer ubuntu-large jobs per run, plus immediate reclamation of runners from superseded runs.
  • Merge queue / main: full coverage preserved.

@amir-deris amir-deris self-assigned this Jun 24, 2026
@amir-deris amir-deris changed the title Amir/plt 761 reduce ci wall clock time ci(PLT-761): cancel superseded integration-test runs and defer Autobahn matrix to merge queue Jun 24, 2026
@cursor

cursor Bot commented Jun 24, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Changes are limited to GitHub Actions workflow configuration and test scheduling; no application or chain logic is modified.

Overview
Integration test CI gets faster PR feedback by canceling stale runs and shrinking the matrix on pull requests, without dropping full coverage on merge queue and push.

A concurrency block with cancel-in-progress: true is added to integration-test.yml, using the same group key pattern as go-test.yml (SHA on push, ref otherwise) so new commits on a PR branch stop the previous large matrix instead of competing for ubuntu-large runners.

The inline integration test matrix is moved to integration-test-matrix.json. Eleven Autobahn GIGA-mode rows are tagged merge_only: true. A new set-matrix job loads that file and, on pull_request only, strips those entries with jq before the matrix expands—avoiding per-matrix if: skips that GitHub Actions cannot validate. integration-tests now depends on set-matrix and uses fromJSON(needs.set-matrix.outputs.tests).

On PRs, roughly 11 fewer matrix jobs run; Autobahn smoke still comes from the unchanged Autobahn Basic job. Push and merge queue still run the full matrix.

Reviewed by Cursor Bugbot for commit 94bb97e. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

The latest Buf updates on your PR. Results from workflow Buf / buf (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed✅ passed✅ passed✅ passedJun 25, 2026, 12:33 AM

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 1e72025. Configure here.


concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name == 'push' && github.sha || github.ref }}
cancel-in-progress: true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merge queue runs cancel each other

High Severity

The new workflow concurrency group uses github.ref for non-push events, so every merge_group run on the same target branch shares one group while cancel-in-progress is true. Overlapping merge-queue checks can cancel each other’s long integration runs, leaving required checks failed or cancelled and blocking merges.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 1e72025. Configure here.

@codecov

codecov Bot commented Jun 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 58.15%. Comparing base (04ca0f6) to head (94bb97e).

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #3639      +/-   ##
==========================================
- Coverage   59.12%   58.15%   -0.97%     
==========================================
  Files        2259     2176      -83     
  Lines      186487   176890    -9597     
==========================================
- Hits       110255   102869    -7386     
+ Misses      66351    64929    -1422     
+ Partials     9881     9092     -789     
Flag Coverage Δ
sei-db 70.41% <ø> (ø)
sei-db-state-db ?

Flags with carried forward coverage won't be shown. Click here to find out more.
see 83 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

amir-deris and others added 2 commits June 24, 2026 16:10
The job-level `if: !matrix.test.merge_only` referenced the matrix context,
which is unavailable in jobs.<id>.if. This failed workflow validation
(startup failure, 0 jobs), so the required Integration Test checks never
reported and the PR stayed BLOCKED.

Resolve the matrix in a new set-matrix job instead: extract the entries to
integration-test-matrix.json and filter out merge_only (Autobahn GIGA-mode)
variants on pull_request with jq, then consume it via
matrix.test = fromJSON(needs.set-matrix.outputs.tests). PRs run 21 of 32
entries; push and merge queue run the full matrix.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant