Skip to content

Commit 7a3c03a

Browse files
Merge e2e rows that share one toolchain setup (#1234)
CI spawns ~134 e2e legs per run and most finish in under 2.5 min, with ~64% of each leg spent on job setup, checkout and downloading the e2e binaries (#1178). Rows that differ only in `suite` pay that overhead twice or three times for the same toolchain. The shared run step already loops over a space-separated `suite` and fails any suite that runs no test, so list the suites in one row instead: composer (6 -> 3 legs), bundler eras (14 -> 7), bun text-lock eras (12 -> 4 on Linux, 3 -> 1 on Windows), Maven lines (10 -> 6) and the e2e-full bundler 2.7.2 pair (2 -> 1). e2e_bun_lockb keeps its own legs because its env gates key on the row's suite. Every (suite, OS, toolchain) cell still runs in the same job on the same events. Claude-Session: https://claude.ai/code/session_01Bp6XLBUDPLHroKWxwtXi25 Co-authored-by: Claude <noreply@anthropic.com>
1 parent d3b5e76 commit 7a3c03a

1 file changed

Lines changed: 33 additions & 68 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 33 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -985,32 +985,26 @@ jobs:
985985
# hosted redirect must drop); 2.10 does not. The exact-release
986986
# matrix, 2.9.8 and macOS/Windows included, is
987987
# composer-compatibility.yml.
988-
- {os: ubuntu-latest, suite: e2e_vendor_composer_build, composer: '2'}
989-
- {os: ubuntu-latest, suite: e2e_vendor_composer_build, composer: '2.2'}
990-
- {os: ubuntu-latest, suite: e2e_vendor_composer_build, composer: '1'}
991-
- {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '2'}
992-
- {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '2.2'}
993-
- {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '1'}
988+
# Both capstones share one leg per composer line: the setup is
989+
# identical and the run step loops over `suite`.
990+
- {os: ubuntu-latest, suite: e2e_vendor_composer_build e2e_redirect_composer_build, composer: '2'}
991+
- {os: ubuntu-latest, suite: e2e_vendor_composer_build e2e_redirect_composer_build, composer: '2.2'}
992+
- {os: ubuntu-latest, suite: e2e_vendor_composer_build e2e_redirect_composer_build, composer: '1'}
994993
# Real-bundler gem capstones, one leg per bundler era. Boundaries:
995994
# 1.17/2.1 merged GEM section, 2.2 separate sections, 2.5 last
996995
# pre-CHECKSUMS, 2.6 CHECKSUMS, 4.0.15/4.0.21 before/after the
997996
# strict frozen check (rubygems#9750). bundler <= 2.2 needs
998997
# Ruby <= 3.3 and 1.17-2.1 need Ruby <= 3.1 (`untaint`). 2.7.2
999998
# (no boundary of its own) is in e2e-full.
1000-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.1', bundler: '1.17.3'}
1001-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.1', bundler: '2.1.4'}
1002-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.1', bundler: '2.2.33'}
1003-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.3', bundler: '2.5.23'}
1004-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.3', bundler: '2.6.9'}
1005-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.4', bundler: '4.0.15'}
1006-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.4', bundler: '4.0.21'}
1007-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.1', bundler: '1.17.3'}
1008-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.1', bundler: '2.1.4'}
1009-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.1', bundler: '2.2.33'}
1010-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.3', bundler: '2.5.23'}
1011-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.3', bundler: '2.6.9'}
1012-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.15'}
1013-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.21'}
999+
# Hosted and vendored share each era's leg (one Ruby + bundler
1000+
# setup; the run step loops over `suite`).
1001+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.1', bundler: '1.17.3'}
1002+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.1', bundler: '2.1.4'}
1003+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.1', bundler: '2.2.33'}
1004+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.3', bundler: '2.5.23'}
1005+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.3', bundler: '2.6.9'}
1006+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.15'}
1007+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.21'}
10141008
# The live-API smoke suites (e2e_npm, e2e_pypi, e2e_gem,
10151009
# e2e_scan) are intentionally NOT in the PR matrix — their
10161010
# `#[ignore]`-gated tests hit the real public proxy at
@@ -1089,47 +1083,29 @@ jobs:
10891083
# latest release alone cannot prove the rewrite + fresh install
10901084
# round-trip on the locks real projects commit. 1.1.45 = last v0
10911085
# writer, 1.2.23 = v1, 1.3.14 = last pre-v2 default, 1.4.2 = v2.
1086+
#
1087+
# One leg per bun release runs all three suites (the run step
1088+
# loops over `suite`); e2e_bun_lockb keeps its own legs because
1089+
# the SOCKET_PATCH_BUN_LOCKB_* gates key on the row's suite.
10921090
- os: ubuntu-latest
1093-
suite: e2e_redirect_bun_build
1094-
bun: '1.4.2'
1095-
test_filter: --include-ignored
1096-
- os: ubuntu-latest
1097-
suite: e2e_redirect_bun_build
1098-
bun: '1.1.45'
1099-
test_filter: --include-ignored
1100-
- os: ubuntu-latest
1101-
suite: e2e_redirect_bun_build
1102-
bun: '1.2.23'
1103-
test_filter: --include-ignored
1104-
- os: ubuntu-latest
1105-
suite: e2e_vendor_bun_build
1091+
suite: e2e_redirect_bun_build e2e_vendor_bun_build mode_migration_bun
11061092
bun: '1.4.2'
11071093
test_filter: --include-ignored
11081094
- os: ubuntu-latest
1109-
suite: e2e_vendor_bun_build
1095+
suite: e2e_redirect_bun_build e2e_vendor_bun_build mode_migration_bun
11101096
bun: '1.1.45'
11111097
test_filter: --include-ignored
11121098
- os: ubuntu-latest
1113-
suite: e2e_vendor_bun_build
1099+
suite: e2e_redirect_bun_build e2e_vendor_bun_build mode_migration_bun
11141100
bun: '1.2.23'
11151101
test_filter: --include-ignored
11161102
- os: ubuntu-latest
1117-
suite: mode_migration_bun
1118-
bun: '1.4.2'
1119-
test_filter: --include-ignored
1120-
- os: ubuntu-latest
1121-
suite: mode_migration_bun
1103+
suite: e2e_redirect_bun_build e2e_vendor_bun_build mode_migration_bun
11221104
bun: '1.3.14'
11231105
test_filter: --include-ignored
1124-
# Manifest-less VEX era legs: the last pre-v2 text-lock writer for
1125-
# the hosted/vendored capstones, the v0/v1 writers for the takeover
1126-
# suite, and the binary bun.lockb era (1.0 / 1.1 lines) through
1127-
# e2e_bun_lockb, which reads the SOCKET_PATCH_BUN_LOCKB_* gates
1128-
# exported for it below.
1129-
- {os: ubuntu-latest, suite: e2e_redirect_bun_build, bun: '1.3.14', test_filter: --include-ignored}
1130-
- {os: ubuntu-latest, suite: e2e_vendor_bun_build, bun: '1.3.14', test_filter: --include-ignored}
1131-
- {os: ubuntu-latest, suite: mode_migration_bun, bun: '1.1.45', test_filter: --include-ignored}
1132-
- {os: ubuntu-latest, suite: mode_migration_bun, bun: '1.2.23', test_filter: --include-ignored}
1106+
# The binary bun.lockb era (1.0 / 1.1 lines) through e2e_bun_lockb,
1107+
# which reads the SOCKET_PATCH_BUN_LOCKB_* gates exported for it
1108+
# below.
11331109
- {os: ubuntu-latest, suite: e2e_bun_lockb, bun: '1.0.36', test_filter: --include-ignored}
11341110
- {os: ubuntu-latest, suite: e2e_bun_lockb, bun: '1.1.45', test_filter: --include-ignored}
11351111
# Bun >= 1.4 migrating a hosted workspace bun.lockb to bun.lock
@@ -1233,16 +1209,14 @@ jobs:
12331209
# 3.9 (trusted checksums), 4.0 rc. Hosted also runs both sides of
12341210
# the trusted-checksums floor: 3.9.3 (last release that ignores
12351211
# the .mvn/checksums pin) and 3.9.4 (first that enforces it).
1236-
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.6.3'}
1237-
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.8.9'}
1212+
# Lines that run both capstones run them in one leg (one Maven
1213+
# install; the run step loops over `suite`).
1214+
- {os: ubuntu-latest, suite: e2e_redirect_maven_build e2e_vendor_maven_build, jvm_tool: maven, maven: '3.6.3'}
1215+
- {os: ubuntu-latest, suite: e2e_redirect_maven_build e2e_vendor_maven_build, jvm_tool: maven, maven: '3.8.9'}
1216+
- {os: ubuntu-latest, suite: e2e_redirect_maven_build e2e_vendor_maven_build, jvm_tool: maven, maven: '3.9.16'}
1217+
- {os: ubuntu-latest, suite: e2e_redirect_maven_build e2e_vendor_maven_build, jvm_tool: maven, maven: '4.0.0-rc-6'}
12381218
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.9.3'}
12391219
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.9.4'}
1240-
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.9.16'}
1241-
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '4.0.0-rc-6'}
1242-
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '3.6.3'}
1243-
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '3.8.9'}
1244-
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '3.9.16'}
1245-
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '4.0.0-rc-6'}
12461220
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.6.3', test_filter: '--ignored maven_reactor'}
12471221
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.8.9', test_filter: '--ignored maven_reactor'}
12481222
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.9.2', test_filter: '--ignored maven_reactor'}
@@ -1787,15 +1761,7 @@ jobs:
17871761
- os: windows-latest
17881762
suite: e2e_redirect_rush_sim
17891763
- os: windows-latest
1790-
suite: e2e_redirect_bun_build
1791-
bun: '1.4.2'
1792-
test_filter: --include-ignored
1793-
- os: windows-latest
1794-
suite: e2e_vendor_bun_build
1795-
bun: '1.4.2'
1796-
test_filter: --include-ignored
1797-
- os: windows-latest
1798-
suite: mode_migration_bun
1764+
suite: e2e_redirect_bun_build e2e_vendor_bun_build mode_migration_bun
17991765
bun: '1.4.2'
18001766
test_filter: --include-ignored
18011767
- {os: windows-latest, suite: e2e_redirect_vlt_build, vlt: '1.2.0', test_filter: --include-ignored vlt_pinned_matrix}
@@ -1882,8 +1848,7 @@ jobs:
18821848
fail-fast: false
18831849
matrix:
18841850
include:
1885-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.3', bundler: '2.7.2'}
1886-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.3', bundler: '2.7.2'}
1851+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.3', bundler: '2.7.2'}
18871852
- {os: ubuntu-latest, suite: e2e_redirect_uv_build, uv: '0.2.37'}
18881853
- {os: ubuntu-latest, suite: e2e_redirect_uv_build, uv: '0.3.5'}
18891854
- {os: ubuntu-latest, suite: e2e_redirect_uv_build, uv: '0.4.30'}

0 commit comments

Comments
 (0)