Skip to content

Commit 1cb87af

Browse files
committed
Merge e2e rows that share one toolchain setup
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. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bp6XLBUDPLHroKWxwtXi25
1 parent f3c6313 commit 1cb87af

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
@@ -979,32 +979,26 @@ jobs:
979979
# hosted redirect must drop); 2.10 does not. The exact-release
980980
# matrix, 2.9.8 and macOS/Windows included, is
981981
# composer-compatibility.yml.
982-
- {os: ubuntu-latest, suite: e2e_vendor_composer_build, composer: '2'}
983-
- {os: ubuntu-latest, suite: e2e_vendor_composer_build, composer: '2.2'}
984-
- {os: ubuntu-latest, suite: e2e_vendor_composer_build, composer: '1'}
985-
- {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '2'}
986-
- {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '2.2'}
987-
- {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '1'}
982+
# Both capstones share one leg per composer line: the setup is
983+
# identical and the run step loops over `suite`.
984+
- {os: ubuntu-latest, suite: e2e_vendor_composer_build e2e_redirect_composer_build, composer: '2'}
985+
- {os: ubuntu-latest, suite: e2e_vendor_composer_build e2e_redirect_composer_build, composer: '2.2'}
986+
- {os: ubuntu-latest, suite: e2e_vendor_composer_build e2e_redirect_composer_build, composer: '1'}
988987
# Real-bundler gem capstones, one leg per bundler era. Boundaries:
989988
# 1.17/2.1 merged GEM section, 2.2 separate sections, 2.5 last
990989
# pre-CHECKSUMS, 2.6 CHECKSUMS, 4.0.15/4.0.21 before/after the
991990
# strict frozen check (rubygems#9750). bundler <= 2.2 needs
992991
# Ruby <= 3.3 and 1.17-2.1 need Ruby <= 3.1 (`untaint`). 2.7.2
993992
# (no boundary of its own) is in e2e-full.
994-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.1', bundler: '1.17.3'}
995-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.1', bundler: '2.1.4'}
996-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.1', bundler: '2.2.33'}
997-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.3', bundler: '2.5.23'}
998-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.3', bundler: '2.6.9'}
999-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.4', bundler: '4.0.15'}
1000-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.4', bundler: '4.0.21'}
1001-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.1', bundler: '1.17.3'}
1002-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.1', bundler: '2.1.4'}
1003-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.1', bundler: '2.2.33'}
1004-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.3', bundler: '2.5.23'}
1005-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.3', bundler: '2.6.9'}
1006-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.15'}
1007-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.21'}
993+
# Hosted and vendored share each era's leg (one Ruby + bundler
994+
# setup; the run step loops over `suite`).
995+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.1', bundler: '1.17.3'}
996+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.1', bundler: '2.1.4'}
997+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.1', bundler: '2.2.33'}
998+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.3', bundler: '2.5.23'}
999+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.3', bundler: '2.6.9'}
1000+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.15'}
1001+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.21'}
10081002
# The live-API smoke suites (e2e_npm, e2e_pypi, e2e_gem,
10091003
# e2e_scan) are intentionally NOT in the PR matrix — their
10101004
# `#[ignore]`-gated tests hit the real public proxy at
@@ -1083,47 +1077,29 @@ jobs:
10831077
# latest release alone cannot prove the rewrite + fresh install
10841078
# round-trip on the locks real projects commit. 1.1.45 = last v0
10851079
# writer, 1.2.23 = v1, 1.3.14 = last pre-v2 default, 1.4.2 = v2.
1080+
#
1081+
# One leg per bun release runs all three suites (the run step
1082+
# loops over `suite`); e2e_bun_lockb keeps its own legs because
1083+
# the SOCKET_PATCH_BUN_LOCKB_* gates key on the row's suite.
10861084
- os: ubuntu-latest
1087-
suite: e2e_redirect_bun_build
1088-
bun: '1.4.2'
1089-
test_filter: --include-ignored
1090-
- os: ubuntu-latest
1091-
suite: e2e_redirect_bun_build
1092-
bun: '1.1.45'
1093-
test_filter: --include-ignored
1094-
- os: ubuntu-latest
1095-
suite: e2e_redirect_bun_build
1096-
bun: '1.2.23'
1097-
test_filter: --include-ignored
1098-
- os: ubuntu-latest
1099-
suite: e2e_vendor_bun_build
1085+
suite: e2e_redirect_bun_build e2e_vendor_bun_build mode_migration_bun
11001086
bun: '1.4.2'
11011087
test_filter: --include-ignored
11021088
- os: ubuntu-latest
1103-
suite: e2e_vendor_bun_build
1089+
suite: e2e_redirect_bun_build e2e_vendor_bun_build mode_migration_bun
11041090
bun: '1.1.45'
11051091
test_filter: --include-ignored
11061092
- os: ubuntu-latest
1107-
suite: e2e_vendor_bun_build
1093+
suite: e2e_redirect_bun_build e2e_vendor_bun_build mode_migration_bun
11081094
bun: '1.2.23'
11091095
test_filter: --include-ignored
11101096
- os: ubuntu-latest
1111-
suite: mode_migration_bun
1112-
bun: '1.4.2'
1113-
test_filter: --include-ignored
1114-
- os: ubuntu-latest
1115-
suite: mode_migration_bun
1097+
suite: e2e_redirect_bun_build e2e_vendor_bun_build mode_migration_bun
11161098
bun: '1.3.14'
11171099
test_filter: --include-ignored
1118-
# Manifest-less VEX era legs: the last pre-v2 text-lock writer for
1119-
# the hosted/vendored capstones, the v0/v1 writers for the takeover
1120-
# suite, and the binary bun.lockb era (1.0 / 1.1 lines) through
1121-
# e2e_bun_lockb, which reads the SOCKET_PATCH_BUN_LOCKB_* gates
1122-
# exported for it below.
1123-
- {os: ubuntu-latest, suite: e2e_redirect_bun_build, bun: '1.3.14', test_filter: --include-ignored}
1124-
- {os: ubuntu-latest, suite: e2e_vendor_bun_build, bun: '1.3.14', test_filter: --include-ignored}
1125-
- {os: ubuntu-latest, suite: mode_migration_bun, bun: '1.1.45', test_filter: --include-ignored}
1126-
- {os: ubuntu-latest, suite: mode_migration_bun, bun: '1.2.23', test_filter: --include-ignored}
1100+
# The binary bun.lockb era (1.0 / 1.1 lines) through e2e_bun_lockb,
1101+
# which reads the SOCKET_PATCH_BUN_LOCKB_* gates exported for it
1102+
# below.
11271103
- {os: ubuntu-latest, suite: e2e_bun_lockb, bun: '1.0.36', test_filter: --include-ignored}
11281104
- {os: ubuntu-latest, suite: e2e_bun_lockb, bun: '1.1.45', test_filter: --include-ignored}
11291105
# Bun >= 1.4 migrating a hosted workspace bun.lockb to bun.lock
@@ -1227,16 +1203,14 @@ jobs:
12271203
# 3.9 (trusted checksums), 4.0 rc. Hosted also runs both sides of
12281204
# the trusted-checksums floor: 3.9.3 (last release that ignores
12291205
# the .mvn/checksums pin) and 3.9.4 (first that enforces it).
1230-
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.6.3'}
1231-
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.8.9'}
1206+
# Lines that run both capstones run them in one leg (one Maven
1207+
# install; the run step loops over `suite`).
1208+
- {os: ubuntu-latest, suite: e2e_redirect_maven_build e2e_vendor_maven_build, jvm_tool: maven, maven: '3.6.3'}
1209+
- {os: ubuntu-latest, suite: e2e_redirect_maven_build e2e_vendor_maven_build, jvm_tool: maven, maven: '3.8.9'}
1210+
- {os: ubuntu-latest, suite: e2e_redirect_maven_build e2e_vendor_maven_build, jvm_tool: maven, maven: '3.9.16'}
1211+
- {os: ubuntu-latest, suite: e2e_redirect_maven_build e2e_vendor_maven_build, jvm_tool: maven, maven: '4.0.0-rc-6'}
12321212
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.9.3'}
12331213
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.9.4'}
1234-
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.9.16'}
1235-
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '4.0.0-rc-6'}
1236-
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '3.6.3'}
1237-
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '3.8.9'}
1238-
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '3.9.16'}
1239-
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '4.0.0-rc-6'}
12401214
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.6.3', test_filter: '--ignored maven_reactor'}
12411215
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.8.9', test_filter: '--ignored maven_reactor'}
12421216
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.9.2', test_filter: '--ignored maven_reactor'}
@@ -1771,15 +1745,7 @@ jobs:
17711745
- os: windows-latest
17721746
suite: e2e_redirect_rush_sim
17731747
- os: windows-latest
1774-
suite: e2e_redirect_bun_build
1775-
bun: '1.4.2'
1776-
test_filter: --include-ignored
1777-
- os: windows-latest
1778-
suite: e2e_vendor_bun_build
1779-
bun: '1.4.2'
1780-
test_filter: --include-ignored
1781-
- os: windows-latest
1782-
suite: mode_migration_bun
1748+
suite: e2e_redirect_bun_build e2e_vendor_bun_build mode_migration_bun
17831749
bun: '1.4.2'
17841750
test_filter: --include-ignored
17851751
- {os: windows-latest, suite: e2e_redirect_vlt_build, vlt: '1.2.0', test_filter: --include-ignored vlt_pinned_matrix}
@@ -1866,8 +1832,7 @@ jobs:
18661832
fail-fast: false
18671833
matrix:
18681834
include:
1869-
- {os: ubuntu-latest, suite: e2e_redirect_gem_build, ruby: '3.3', bundler: '2.7.2'}
1870-
- {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.3', bundler: '2.7.2'}
1835+
- {os: ubuntu-latest, suite: e2e_redirect_gem_build e2e_vendor_gem_build, ruby: '3.3', bundler: '2.7.2'}
18711836
- {os: ubuntu-latest, suite: e2e_redirect_uv_build, uv: '0.2.37'}
18721837
- {os: ubuntu-latest, suite: e2e_redirect_uv_build, uv: '0.3.5'}
18731838
- {os: ubuntu-latest, suite: e2e_redirect_uv_build, uv: '0.4.30'}

0 commit comments

Comments
 (0)