Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 17 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1336,9 +1336,9 @@ jobs:
# Lines that run both capstones run them in one leg (one Maven
# install; the run step loops over `suite`).
- {os: ubuntu-latest, suite: e2e_redirect_maven_build e2e_vendor_maven_build, jvm_tool: maven, maven: '3.9.16'}
# Real-Gradle capstones, PR tier: one leg per Gradle line x {agent +
# hosted, vendor + multi-project} on ubuntu, each on its line's LTS
# JDK. Every other OS x line x mode cell (and the JDK-ceiling,
# Real-Gradle capstones, PR tier: legs per Gradle line x {agent,
# hosted (three shards), vendor + multi-project} on ubuntu, each on
# its line's LTS JDK. Every other OS x line x mode cell (and the JDK-ceiling,
# configuration-cache, Isolated Projects and real-Central rows) runs
# in gradle-compatibility.yml. `suite` lists every binary the leg
# runs (space-separated); the libtest filters select by the prefix
Expand All @@ -1349,11 +1349,14 @@ jobs:
# selected test needs it (gradle_vendor_395's mixed root).
# The hosted suite (~43 real-Gradle builds, ~31 min serially) is
# split into three legs per line so it stops being the merge-queue
# critical path: the agent suites plus `gradle_hosted_[345]`, the
# `gradle_hosted_[b-p]` names, and a catch-all that `--skip`s
# exactly those words, so a new test always lands in some leg
# (test_ci_gradle_prefixes.py keeps the skip list in sync).
- {os: ubuntu-latest, suite: 'e2e_gradle_discovery_build e2e_gradle_agent_build e2e_redirect_gradle_build', jvm_tool: gradle, gradle: '9.8.0', java: '21', test_filter: '--ignored gradle_agent_ gradle_hosted_3 gradle_hosted_4 gradle_hosted_5'}
# critical path: `gradle_hosted_[345]`, the `gradle_hosted_[b-p]`
# names, and a catch-all that `--skip`s exactly those words, so a
# new test always lands in some leg (test_ci_gradle_prefixes.py
# keeps the skip list in sync). The agent suites get a leg of their
# own: sharing one with `gradle_hosted_[345]`, that leg took 4.3-6.2
# min and often outlasted the `coverage` job, setting `ci-ok`.
- {os: ubuntu-latest, suite: 'e2e_gradle_discovery_build e2e_gradle_agent_build', jvm_tool: gradle, gradle: '9.8.0', java: '21', test_filter: '--ignored gradle_agent_'}
- {os: ubuntu-latest, suite: e2e_redirect_gradle_build, jvm_tool: gradle, gradle: '9.8.0', java: '21', test_filter: '--ignored gradle_hosted_3 gradle_hosted_4 gradle_hosted_5'}
# Real-sbt hosted (socket-patch.sbt) + vendored
# (socket-patch-vendor.sbt) capstones on the current 1.x line. The
# other sbt lines, JDK 21, the agent cells beyond coverage-docker's,
Expand Down Expand Up @@ -1953,15 +1956,18 @@ jobs:
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.9.2', test_filter: '--ignored maven_reactor'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.9.16', test_filter: '--ignored maven_reactor'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '4.0.0-rc-7', test_filter: '--ignored maven_reactor'}
- {os: ubuntu-latest, suite: 'e2e_gradle_discovery_build e2e_gradle_agent_build e2e_redirect_gradle_build', jvm_tool: gradle, gradle: '6.9.4', java: '11', test_filter: '--ignored gradle_agent_ gradle_hosted_3 gradle_hosted_4 gradle_hosted_5'}
- {os: ubuntu-latest, suite: 'e2e_gradle_discovery_build e2e_gradle_agent_build', jvm_tool: gradle, gradle: '6.9.4', java: '11', test_filter: '--ignored gradle_agent_'}
- {os: ubuntu-latest, suite: e2e_redirect_gradle_build, jvm_tool: gradle, gradle: '6.9.4', java: '11', test_filter: '--ignored gradle_hosted_3 gradle_hosted_4 gradle_hosted_5'}
- {os: ubuntu-latest, suite: e2e_redirect_gradle_build, jvm_tool: gradle, gradle: '6.9.4', java: '11', test_filter: '--ignored gradle_hosted_b gradle_hosted_c gradle_hosted_d gradle_hosted_e gradle_hosted_f gradle_hosted_l gradle_hosted_m gradle_hosted_n gradle_hosted_o gradle_hosted_p'}
- {os: ubuntu-latest, suite: e2e_redirect_gradle_build, jvm_tool: gradle, gradle: '6.9.4', java: '11', test_filter: '--ignored gradle_hosted_ --skip gradle_hosted_3 --skip gradle_hosted_4 --skip gradle_hosted_5 --skip gradle_hosted_b --skip gradle_hosted_c --skip gradle_hosted_d --skip gradle_hosted_e --skip gradle_hosted_f --skip gradle_hosted_l --skip gradle_hosted_m --skip gradle_hosted_n --skip gradle_hosted_o --skip gradle_hosted_p'}
- {os: ubuntu-latest, suite: 'e2e_vendor_gradle_build e2e_vendor_jvm_build', jvm_tool: gradle, gradle: '6.9.4', java: '11', test_filter: '--ignored gradle_vendor_ gradle_multi_project'}
- {os: ubuntu-latest, suite: 'e2e_gradle_discovery_build e2e_gradle_agent_build e2e_redirect_gradle_build', jvm_tool: gradle, gradle: '7.6.6', java: '17', test_filter: '--ignored gradle_agent_ gradle_hosted_3 gradle_hosted_4 gradle_hosted_5'}
- {os: ubuntu-latest, suite: 'e2e_gradle_discovery_build e2e_gradle_agent_build', jvm_tool: gradle, gradle: '7.6.6', java: '17', test_filter: '--ignored gradle_agent_'}
- {os: ubuntu-latest, suite: e2e_redirect_gradle_build, jvm_tool: gradle, gradle: '7.6.6', java: '17', test_filter: '--ignored gradle_hosted_3 gradle_hosted_4 gradle_hosted_5'}
- {os: ubuntu-latest, suite: e2e_redirect_gradle_build, jvm_tool: gradle, gradle: '7.6.6', java: '17', test_filter: '--ignored gradle_hosted_b gradle_hosted_c gradle_hosted_d gradle_hosted_e gradle_hosted_f gradle_hosted_l gradle_hosted_m gradle_hosted_n gradle_hosted_o gradle_hosted_p'}
- {os: ubuntu-latest, suite: e2e_redirect_gradle_build, jvm_tool: gradle, gradle: '7.6.6', java: '17', test_filter: '--ignored gradle_hosted_ --skip gradle_hosted_3 --skip gradle_hosted_4 --skip gradle_hosted_5 --skip gradle_hosted_b --skip gradle_hosted_c --skip gradle_hosted_d --skip gradle_hosted_e --skip gradle_hosted_f --skip gradle_hosted_l --skip gradle_hosted_m --skip gradle_hosted_n --skip gradle_hosted_o --skip gradle_hosted_p'}
- {os: ubuntu-latest, suite: 'e2e_vendor_gradle_build e2e_vendor_jvm_build', jvm_tool: gradle, gradle: '7.6.6', java: '17', test_filter: '--ignored gradle_vendor_ gradle_multi_project'}
- {os: ubuntu-latest, suite: 'e2e_gradle_discovery_build e2e_gradle_agent_build e2e_redirect_gradle_build', jvm_tool: gradle, gradle: '8.14.3', java: '21', test_filter: '--ignored gradle_agent_ gradle_hosted_3 gradle_hosted_4 gradle_hosted_5'}
- {os: ubuntu-latest, suite: 'e2e_gradle_discovery_build e2e_gradle_agent_build', jvm_tool: gradle, gradle: '8.14.3', java: '21', test_filter: '--ignored gradle_agent_'}
- {os: ubuntu-latest, suite: e2e_redirect_gradle_build, jvm_tool: gradle, gradle: '8.14.3', java: '21', test_filter: '--ignored gradle_hosted_3 gradle_hosted_4 gradle_hosted_5'}
- {os: ubuntu-latest, suite: e2e_redirect_gradle_build, jvm_tool: gradle, gradle: '8.14.3', java: '21', test_filter: '--ignored gradle_hosted_b gradle_hosted_c gradle_hosted_d gradle_hosted_e gradle_hosted_f gradle_hosted_l gradle_hosted_m gradle_hosted_n gradle_hosted_o gradle_hosted_p'}
- {os: ubuntu-latest, suite: e2e_redirect_gradle_build, jvm_tool: gradle, gradle: '8.14.3', java: '21', test_filter: '--ignored gradle_hosted_ --skip gradle_hosted_3 --skip gradle_hosted_4 --skip gradle_hosted_5 --skip gradle_hosted_b --skip gradle_hosted_c --skip gradle_hosted_d --skip gradle_hosted_e --skip gradle_hosted_f --skip gradle_hosted_l --skip gradle_hosted_m --skip gradle_hosted_n --skip gradle_hosted_o --skip gradle_hosted_p'}
- {os: ubuntu-latest, suite: 'e2e_vendor_gradle_build e2e_vendor_jvm_build', jvm_tool: gradle, gradle: '8.14.3', java: '21', test_filter: '--ignored gradle_vendor_ gradle_multi_project'}
Expand Down
2 changes: 1 addition & 1 deletion docs/testing/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ reach Maven Central.

| Tier | Where | Cells |
| --- | --- | --- |
| PR | `ci.yml` `e2e` job | ubuntu × {6.9.4 / JDK 11, 7.6.6 / JDK 17, 8.14.3 / JDK 21, 9.8.0 / JDK 21} × {agent + hosted, vendored + multi-project}, plus Windows 8.14.3 multi-project |
| PR | `ci.yml` `e2e` job | ubuntu × {6.9.4 / JDK 11, 7.6.6 / JDK 17, 8.14.3 / JDK 21, 9.8.0 / JDK 21} × {agent, hosted (three shards), vendored + multi-project}, plus Windows 8.14.3 multi-project |
| Full | [`gradle-compatibility.yml`](../../.github/workflows/gradle-compatibility.yml) (path-filtered PRs, nightly, manual) | {ubuntu, macOS arm64, Windows} × the four lines × {agent, hosted, vendored} = 36 cells; JDK ceilings (6.9 on 15, 7.6 on 19, 8.14 on 24); `--configuration-cache` (9.8.0 hosted and vendored); Isolated Projects (9.8.0 hosted, recording only); real Maven Central (8.14.3, #511 and #487) |

Every full-tier cell uploads JSON probe reports (Gradle and JDK version, resolved jar
Expand Down
13 changes: 7 additions & 6 deletions scripts/tests/test_ci_e2e_tiers.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,9 @@ def test_bundle_reads_cargo_json(self):
# HostedShards checks every hosted test runs in exactly one of them).
HOSTED_SHARD_1 = ["gradle_hosted_3", "gradle_hosted_4", "gradle_hosted_5"]
HOSTED_SHARD_2 = ["gradle_hosted_" + c for c in "bcdeflmnop"]
AGENT_HOSTED = (
("e2e_gradle_discovery_build e2e_gradle_agent_build e2e_redirect_gradle_build",
" ".join(["--ignored", "gradle_agent_", *HOSTED_SHARD_1])),
AGENT_AND_HOSTED_SHARDS = (
("e2e_gradle_discovery_build e2e_gradle_agent_build", "--ignored gradle_agent_"),
("e2e_redirect_gradle_build", " ".join(["--ignored", *HOSTED_SHARD_1])),
("e2e_redirect_gradle_build", " ".join(["--ignored", *HOSTED_SHARD_2])),
("e2e_redirect_gradle_build",
" ".join(["--ignored", "gradle_hosted_"] + [w for p in HOSTED_SHARD_1 + HOSTED_SHARD_2 for w in ("--skip", p)])),
Expand Down Expand Up @@ -171,7 +171,7 @@ def test_pr_rows_are_the_lean_table(self):
gradle = [r for r in rows("e2e") if r.get("jvm_tool") == "gradle"]
want = []
for line, java in GRADLE_LINES.items():
for suite, test_filter in (*AGENT_HOSTED, VENDOR):
for suite, test_filter in (*AGENT_AND_HOSTED_SHARDS, VENDOR):
row = {"os": "ubuntu-latest", "suite": suite, "jvm_tool": "gradle", "gradle": line,
"java": java, "test_filter": test_filter}
# The allowance lasts only while a suite of the row is unlanded.
Expand All @@ -180,7 +180,7 @@ def test_pr_rows_are_the_lean_table(self):
want.append(row)
want.append({"os": "windows-latest", "suite": "e2e_vendor_jvm_build", "jvm_tool": "gradle",
"gradle": "8.14.3", "java": "17", "test_filter": "--ignored gradle_multi_project"})
self.assertEqual(len(gradle), 17)
self.assertEqual(len(gradle), 21)
self.assertEqual(sorted(map(str, gradle)), sorted(map(str, want)))
self.assertFalse([r for r in rows("e2e-full") if "gradle" in r or "jvm_tool" in r])

Expand Down Expand Up @@ -227,7 +227,8 @@ def needs_maven(row):
gradle = [r for r in rows("e2e") if r.get("jvm_tool") == "gradle"]
self.assertEqual(sum(needs_maven(r) for r in gradle), 5, "the vendor legs + the windows multi-project leg")
for row in gradle:
self.assertEqual(needs_maven(row), "gradle_hosted_" not in row["test_filter"], row)
vendor = {"e2e_vendor_gradle_build", "e2e_vendor_jvm_build"} & set(row["suite"].split())
self.assertEqual(needs_maven(row), bool(vendor), row)

def test_compat_grid_expands_to_36_cells_plus_extras(self):
compat = rows_mod.jobs(GRADLE_COMPAT.read_text(encoding="utf-8"))
Expand Down
Loading