Skip to content

feat(ci): split release fixture builds across multiple fork-range runners#2592

Draft
danceratopz wants to merge 2 commits intoforks/amsterdamfrom
experiments/multi-runner-releases
Draft

feat(ci): split release fixture builds across multiple fork-range runners#2592
danceratopz wants to merge 2 commits intoforks/amsterdamfrom
experiments/multi-runner-releases

Conversation

@danceratopz
Copy link
Copy Markdown
Member

@danceratopz danceratopz commented Mar 30, 2026

🗒️ Description

STILL WIP, needs self-review

Split multi-fork fixture releases (stable, develop) across parallel runners by fork range, reducing release CI wall-clock time. Follows the same pattern established in #2529 for the py3 tox env.

How it works:

  • Features in feature.yaml can now declare fork-ranges — a list of {label, from, until} entries that partition the fork range across runners.
  • A new generate_build_matrix.py script reads the config and emits a flat build matrix (feature × fork-range) for GitHub Actions.
  • Each split runner fills its fork range to a directory with --generate-all-formats, then a combine job merges the directories and creates the final tarball via create_release_tarball.py.
  • Features without fork-ranges (e.g., benchmark) keep current single-runner behavior unchanged.

Workflow structure changes from:

features → build (matrix: feature) → release

to:

setup → build (matrix: feature × range) → combine (matrix: split features) → release

Pre-alloc groups are fork-scoped (a group cannot span multiple forks, though a fork may have many groups), so phase 1 runs independently per runner with no cross-runner coordination needed. Merging is conflict-free directory combination since fixture files live under fork subdirectories (for_cancun/, for_prague/, etc.).

Also bumps stable fork range to include Osaka (latest mainnet fork) and develop to include Amsterdam (current fork in development).

🔗 Related Issues or PRs

✅ Checklist

  • All: Ran fast tox checks to avoid unnecessary CI fails, see also Code Standards and Enabling Pre-commit Checks:
    uvx tox -e static
  • All: PR title adheres to the repo standard - it will be used as the squash commit message and should start type(scope):.
  • All: Considered updating the online docs in the ./docs/ directory.
  • All: Set appropriate labels for the changes (only maintainers can apply labels).

Cute Animal Picture

image

@danceratopz danceratopz marked this pull request as draft March 30, 2026 15:28
@danceratopz danceratopz added C-feat Category: an improvement or new feature A-ci Area: Continuous Integration labels Mar 30, 2026
@danceratopz danceratopz changed the title chore(ci): split release fixture builds across multiple fork-range runners feat(ci): split release fixture builds across multiple fork-range runners Mar 30, 2026
@codecov
Copy link
Copy Markdown

codecov bot commented Mar 30, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.24%. Comparing base (51fc631) to head (526edd1).
⚠️ Report is 14 commits behind head on forks/amsterdam.

Additional details and impacted files
@@                 Coverage Diff                 @@
##           forks/amsterdam    #2592      +/-   ##
===================================================
- Coverage            86.35%   86.24%   -0.12%     
===================================================
  Files                  599      599              
  Lines                36904    36984      +80     
  Branches              3771     3795      +24     
===================================================
+ Hits                 31868    31895      +27     
- Misses                4485     4525      +40     
- Partials               551      564      +13     
Flag Coverage Δ
unittests 86.24% <ø> (-0.12%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…evelop

Add a top-level fork-ranges list for splitting multi-fork releases
across parallel runners. Bump stable to --until=Osaka (latest mainnet
fork) and develop to --until=Amsterdam (current fork in development).
…nners

Split multi-fork fixture releases (stable, develop) across parallel
runners using the shared fork-ranges in feature.yaml. Each runner
fills its fork range to a directory, then a combine job merges the
results into a single release tarball.

Features without --until (e.g., benchmark with --fork) continue to
build on a single runner with unchanged behavior.

Also adds integration tests for the new scripts and a single-fork-range
parameter set to the fill output directory tests.
@danceratopz danceratopz force-pushed the experiments/multi-runner-releases branch from 9aade46 to 526edd1 Compare March 31, 2026 11:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-ci Area: Continuous Integration C-feat Category: an improvement or new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant