@@ -21,8 +21,8 @@ name: Gradle patch compatibility
2121#
2222# 9.8.0 is the current release on services.gradle.org (re-checked
2323# 2026-10-02; bump it here and in ci.yml together when a newer 9.x ships).
24- # 7.6.6 is the last 7.x. Every distribution is sha256-checked against
25- # services.gradle.org before use .
24+ # 7.6.6 is the last 7.x. scripts/install-gradle.sh pins every
25+ # distribution's sha256; add the new version's digest there too .
2626#
2727# Each mode runs its suites' `#[ignore]` tests by name prefix (the contract
2828# scripts/ci-e2e-bundle.py --check enforces): agent = e2e_gradle_discovery_build
4444 paths :
4545 - ' .github/workflows/gradle-compatibility.yml'
4646 - ' scripts/ci-e2e-bundle.py'
47+ - ' scripts/install-gradle.sh'
4748 - ' Cargo.lock'
4849 - ' Cargo.toml'
4950 - ' crates/*/Cargo.toml'
@@ -125,7 +126,7 @@ jobs:
125126 - name : Cache cargo
126127 uses : Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
127128 with :
128- key : gradle-compat
129+ shared- key : e2e-${{ matrix.os }}
129130 save-if : ${{ github.ref == 'refs/heads/main' }}
130131
131132 - name : Check the Gradle test-name prefixes
@@ -256,9 +257,13 @@ jobs:
256257 # TLS handshake with CRYPT_E_REVOCATION_OFFLINE whenever the CA's
257258 # revocation server is unreachable. A revoked certificate still fails;
258259 # the body is checked against a digest right after. A no-op elsewhere.
259- url="https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
260+ # Tarball from Maven Central's CDN, digest from the Apache archive,
261+ # which throttles the tarball itself to minutes (ci.yml's copy).
262+ file="apache-maven-${MAVEN_VERSION}-bin.tar.gz"
263+ url="https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/${MAVEN_VERSION}/${file}"
264+ sha_url="https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/${file}.sha512"
260265 curl -fsSL --retry 5 --retry-all-errors --ssl-revoke-best-effort "$url" -o "$RUNNER_TEMP/maven.tgz"
261- curl -fsSL --retry 5 --retry-all-errors --ssl-revoke-best-effort "$url.sha512 " -o "$RUNNER_TEMP/maven.sha512"
266+ curl -fsSL --retry 5 --retry-all-errors --ssl-revoke-best-effort "$sha_url " -o "$RUNNER_TEMP/maven.sha512"
262267 python -c 'import hashlib, pathlib, os; p=pathlib.Path(os.environ["RUNNER_TEMP"]); assert hashlib.sha512((p/"maven.tgz").read_bytes()).hexdigest() == (p/"maven.sha512").read_text().split()[0]'
263268 python -m tarfile -e "$RUNNER_TEMP/maven.tgz" "$RUNNER_TEMP"
264269 launcher="$RUNNER_TEMP/apache-maven-${MAVEN_VERSION}/bin/mvn"
@@ -273,16 +278,8 @@ jobs:
273278 shell : bash
274279 env :
275280 GRADLE_VERSION : ${{ matrix.gradle }}
276- run : |
277- # Download flags: see the Maven step above.
278- url="https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip"
279- curl -fsSL --retry 5 --retry-all-errors --ssl-revoke-best-effort "$url" -o "$RUNNER_TEMP/gradle.zip"
280- curl -fsSL --retry 5 --retry-all-errors --ssl-revoke-best-effort "$url.sha256" -o "$RUNNER_TEMP/gradle.sha256"
281- python -c 'import hashlib, pathlib, os; p=pathlib.Path(os.environ["RUNNER_TEMP"]); assert hashlib.sha256((p/"gradle.zip").read_bytes()).hexdigest() == (p/"gradle.sha256").read_text().strip()'
282- unzip -q "$RUNNER_TEMP/gradle.zip" -d "$RUNNER_TEMP"
283- launcher="$RUNNER_TEMP/gradle-${GRADLE_VERSION}/bin/gradle"
284- if [ "$RUNNER_OS" = Windows ]; then launcher="${launcher}.bat"; fi
285- echo "SOCKET_PATCH_GRADLE_E2E_GRADLE=$launcher" >> "$GITHUB_ENV"
281+ # Pinned digest, GitHub-release origin: see the script.
282+ run : scripts/install-gradle.sh "$GRADLE_VERSION" "$RUNNER_TEMP" >> "$GITHUB_ENV"
286283
287284 - name : Run the ${{ matrix.mode }} suites
288285 shell : bash
0 commit comments