diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55b5679e1..330b83311 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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 @@ -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, @@ -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'} diff --git a/docs/testing/README.md b/docs/testing/README.md index f13384fd5..496ce9b72 100644 --- a/docs/testing/README.md +++ b/docs/testing/README.md @@ -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 diff --git a/scripts/tests/test_ci_e2e_tiers.py b/scripts/tests/test_ci_e2e_tiers.py index f2d74c2a1..62f6eeb3c 100644 --- a/scripts/tests/test_ci_e2e_tiers.py +++ b/scripts/tests/test_ci_e2e_tiers.py @@ -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)])), @@ -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. @@ -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]) @@ -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"))