Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
aca8b1c
Add a shared JVM cache-root and project-dependency seam
mikolalysenko Oct 2, 2026
601c6b4
Extract the real-Gradle test harness into gradle_build_common
mikolalysenko Oct 2, 2026
49a2be3
Extract the hosted Maven API fake into hosted_maven_common
mikolalysenko Oct 2, 2026
78f10d4
Isolate CLI test children from ambient Gradle and JVM caches
mikolalysenko Oct 2, 2026
1c5ff86
Read Gradle 9's launcher JVM banner and take extra Gradle args
mikolalysenko Oct 2, 2026
336eb45
Add a deterministic fake Maven Central for the JVM capstones
mikolalysenko Oct 2, 2026
90cec6c
Scaffold the Gradle CI tiers around a jvm_tool matrix key
mikolalysenko Oct 2, 2026
90f5936
Clear the clippy lints the new JVM test helpers introduced
mikolalysenko Oct 2, 2026
4cba7fe
Isolate the autocrlf clone from global git config and test it
mikolalysenko Oct 2, 2026
440b09d
Add a pure Gradle model: tokenizer, line endings, version selectors
mikolalysenko Oct 2, 2026
337ada3
Add Gradle user-home resolution and dependency-lock parsing
mikolalysenko Oct 2, 2026
6a9d710
Add the Gradle script graph and its queries
mikolalysenko Oct 2, 2026
8b235de
Make the Gradle classpath print tasks configuration-cache safe
mikolalysenko Oct 2, 2026
55c4b15
Key the Gradle prefix guard and zero-test checks per suite
mikolalysenko Oct 2, 2026
1a6a43e
Close fail-unsafe gaps in the Gradle script graph
mikolalysenko Oct 2, 2026
7578720
Resolve the Gradle home like the JVM and read wrapper init.d
mikolalysenko Oct 2, 2026
d0d82e5
Match Gradle's range patterns and single-value exact selectors
mikolalysenko Oct 2, 2026
7f48f0f
Merge WP0: Foundation: pure Gradle L1 module (dsl, script graph, lock…
mikolalysenko Oct 2, 2026
29d5073
Merge WP5a: Shared harness (real-Gradle e2e helpers, fake Central/hos…
mikolalysenko Oct 2, 2026
9602324
Crawl Gradle's files-2.1 cache again
mikolalysenko Oct 2, 2026
8976973
Expand Gradle version dirs into their hash-dir copies
mikolalysenko Oct 2, 2026
aad66aa
Discover Gradle caches and gate ~/.m2 on mavenLocal()
mikolalysenko Oct 2, 2026
2825a44
Report Gradle discovery in scan and add the discovery suite
mikolalysenko Oct 2, 2026
77bad59
Resolve Maven PURLs from ~/.m2 first
mikolalysenko Oct 2, 2026
68bb804
Harden Gradle discovery's safety probes and PURL lookup
mikolalysenko Oct 2, 2026
36bd67f
Check every Gradle copy in scan and tighten its Gradle notes
mikolalysenko Oct 2, 2026
8066ae4
Merge WP1: Discovery: Gradle cache roots, files-2.1 crawl, installed_…
mikolalysenko Oct 2, 2026
2b1d559
Add the JVM jar swap and Gradle-aware verification to core
mikolalysenko Oct 2, 2026
dd6dbef
Fix vendored Gradle wiring gaps and share its wiring API
mikolalysenko Oct 2, 2026
d60d6af
Patch every Maven copy a build consumes in agent mode
mikolalysenko Oct 2, 2026
0f35359
Re-hash every consumed JVM copy when generating VEX
mikolalysenko Oct 2, 2026
cffbc7b
Test agent mode over hermetic Gradle caches and m2 sidecars
mikolalysenko Oct 2, 2026
b99fee9
Treat a Gradle copy without the record's files as not installed
mikolalysenko Oct 2, 2026
98dc3b7
Add the real-Gradle agent suite and cache canaries
mikolalysenko Oct 2, 2026
6b515cc
Keep committed classifier jars and quiet in-sync Gradle re-runs
mikolalysenko Oct 2, 2026
5caf36d
Test vendored Gradle fixes through the CLI and real Gradle
mikolalysenko Oct 2, 2026
336fde3
Document the vendored Gradle contract
mikolalysenko Oct 2, 2026
55f30df
Fix WP2 review findings in the JVM jar swap and Gradle guards
mikolalysenko Oct 2, 2026
7844d54
Close vendored Gradle review gaps in VEX, repair and legacy roots
mikolalysenko Oct 2, 2026
d850139
Merge WP2: Agent mode: all-copies Maven/Gradle fan-out via installed_…
mikolalysenko Oct 2, 2026
5d7e8a3
Merge WP3: Vendored Gradle fixes (#395 #428 #429 #461 #487 #511 #533)…
mikolalysenko Oct 2, 2026
310527f
Clear clippy warnings in the vendored Gradle capstones
mikolalysenko Oct 2, 2026
35c88b6
Plan hosted Gradle wiring with an owned settings script
mikolalysenko Oct 2, 2026
d676331
Discover hosted Gradle pins from the owned index
mikolalysenko Oct 2, 2026
6626198
Restore hosted Gradle pins to upstream without the network
mikolalysenko Oct 2, 2026
3892065
Take over vendored Gradle entries and snapshot Gradle files on eject
mikolalysenko Oct 2, 2026
1523a54
Leave Gradle resolution failures to Gradle and fix eject rollback
mikolalysenko Oct 2, 2026
8f67eb7
Test hosted Gradle against real Gradle 6.9 through 9.8
mikolalysenko Oct 2, 2026
9880c80
Gate Gradle takeovers and keep user-owned settings files on restore
mikolalysenko Oct 3, 2026
067dd34
Make the hosted Gradle e2e tests prove what they claim
mikolalysenko Oct 3, 2026
7493a34
Merge WP4: Hosted Gradle: owned settings script with substitution + r…
mikolalysenko Oct 3, 2026
24ff4c8
Run the Gradle multi-project capstone without Maven
mikolalysenko Oct 3, 2026
39e0e09
Document every Gradle code in the CLI contract and test it
mikolalysenko Oct 3, 2026
cd57aba
Document Gradle support in the ecosystem guide, testing and changelog
mikolalysenko Oct 3, 2026
89d6b8d
Scan all non-test source in the Gradle contract test
mikolalysenko Oct 3, 2026
c2033b4
Claim only the Gradle platforms actually tested
mikolalysenko Oct 3, 2026
136d042
Merge WP5b: Finish: drop Maven seed, docs, CLI contract, changelog, n…
mikolalysenko Oct 3, 2026
520f374
Merge origin/main into feat/gradle-support
mikolalysenko Oct 3, 2026
4b7948e
Fix Gradle CI: 6.9 JDK ceiling 15, LF hosted script, CC-safe printSou…
mikolalysenko Oct 3, 2026
664a616
Run the selector golden check in every hosted cell; widen the grid's …
mikolalysenko Oct 3, 2026
d69a672
Gradle agent: restore unread m2 copies, judge partly-held copies, pro…
mikolalysenko Oct 3, 2026
ed5f3c7
Gradle hosted/vendored: review round 1 fixes
mikolalysenko Oct 3, 2026
f1b0079
Gradle grid: JDK 15 ceiling from Zulu (Temurin never shipped 15)
mikolalysenko Oct 3, 2026
7f8f12d
Gradle: review round 2 fixes (m2 rollback, above-base locks, latest.*…
mikolalysenko Oct 3, 2026
73bec9b
Gradle e2e: retry a build whose single-use daemon died unanswered
mikolalysenko Oct 3, 2026
33f59a9
Gradle: review round 3 (unreadable m2 copy, unreadable hosted build f…
mikolalysenko Oct 3, 2026
dc62ac3
Read Gradle cache and build files through the FIFO-safe reader
claude Oct 3, 2026
4864cc9
Open the FIFO watchdog's writer non-blocking in the Gradle FIFO test
claude Oct 3, 2026
ebef522
Refuse a non-pristine Gradle before-blob before writing; drop header-…
claude Oct 5, 2026
3bd1e36
Predict the Gradle before-blob refusal on dry runs; guard the blob read
claude Oct 5, 2026
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
5 changes: 3 additions & 2 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ crates/socket-patch-core/tests/fixtures/vendor/** -text
# the replayed wiring files and the expected revert.
crates/socket-patch-cli/tests/fixtures/legacy-ledgers/** -text

# The owned Gradle settings script is embedded with include_str! and
# written into user repos byte for byte; a CRLF checkout would change it.
# The owned Gradle settings scripts (vendored and hosted) are embedded with
# include_str! and written into user repos byte for byte; a CRLF checkout would change it.
crates/socket-patch-core/src/vendor/jvm/socket-patch.settings.gradle -text
crates/socket-patch-core/src/patch/redirect/socket-patch.hosted.settings.gradle -text
152 changes: 120 additions & 32 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1088,30 +1088,45 @@ jobs:
# 3.9 (trusted checksums), 4.0 rc. Hosted also runs both sides of
# the trusted-checksums floor: 3.9.3 (last release that ignores
# the .mvn/checksums pin) and 3.9.4 (first that enforces it).
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, maven: '3.6.3'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, maven: '3.8.9'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, maven: '3.9.3'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, maven: '3.9.4'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, maven: '3.9.16'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, maven: '4.0.0-rc-6'}
- {os: macos-latest, suite: e2e_redirect_maven_build, maven: '3.9.16'}
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, maven: '3.6.3'}
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, maven: '3.8.9'}
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, maven: '3.9.16'}
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, maven: '4.0.0-rc-6'}
- {os: macos-latest, suite: e2e_vendor_maven_build, maven: '3.9.16'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, maven: '3.6.3', test_filter: '--ignored maven_reactor'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, maven: '3.8.9', test_filter: '--ignored maven_reactor'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, maven: '3.9.2', test_filter: '--ignored maven_reactor'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, maven: '3.9.16', test_filter: '--ignored maven_reactor'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, maven: '4.0.0-rc-6', test_filter: '--ignored maven_reactor'}
- {os: macos-latest, suite: e2e_vendor_jvm_build, maven: '3.9.16', test_filter: '--ignored maven_reactor'}
- {os: windows-latest, suite: e2e_vendor_jvm_build, maven: '3.9.16', test_filter: '--ignored maven_reactor'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, gradle: '6.9.4', java: '11', test_filter: '--ignored gradle_multi_project'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, gradle: '7.6.4', java: '17', test_filter: '--ignored gradle_multi_project'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, gradle: '8.14.3', java: '17', test_filter: '--ignored gradle_multi_project'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, gradle: '9.8.0', java: '17', test_filter: '--ignored gradle_multi_project'}
- {os: windows-latest, suite: e2e_vendor_jvm_build, gradle: '8.14.3', java: '17', test_filter: '--ignored gradle_multi_project'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.6.3'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.8.9'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.9.3'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.9.4'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.9.16'}
- {os: ubuntu-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '4.0.0-rc-6'}
- {os: macos-latest, suite: e2e_redirect_maven_build, jvm_tool: maven, maven: '3.9.16'}
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '3.6.3'}
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '3.8.9'}
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '3.9.16'}
- {os: ubuntu-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '4.0.0-rc-6'}
- {os: macos-latest, suite: e2e_vendor_maven_build, jvm_tool: maven, maven: '3.9.16'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.6.3', test_filter: '--ignored maven_reactor'}
- {os: ubuntu-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.8.9', test_filter: '--ignored maven_reactor'}
- {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-6', test_filter: '--ignored maven_reactor'}
- {os: macos-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.9.16', test_filter: '--ignored maven_reactor'}
- {os: windows-latest, suite: e2e_vendor_jvm_build, jvm_tool: maven, maven: '3.9.16', test_filter: '--ignored maven_reactor'}
# 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,
# 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
# contract ci-e2e-bundle.py enforces. Every suite has landed, so no
# row sets `allow_empty` (test_ci_gradle_prefixes.py keeps it that
# way): a missing suite fails the leg, and every suite must run at
# least one test on its own. Maven is installed only where a
# selected test needs it (gradle_vendor_395's mixed root).
- {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_'}
- {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_'}
- {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_'}
- {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'}
- {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_'}
- {os: ubuntu-latest, suite: 'e2e_vendor_gradle_build e2e_vendor_jvm_build', jvm_tool: gradle, gradle: '9.8.0', java: '21', test_filter: '--ignored gradle_vendor_ gradle_multi_project'}
- {os: windows-latest, suite: e2e_vendor_jvm_build, jvm_tool: gradle, gradle: '8.14.3', java: '17', test_filter: '--ignored gradle_multi_project'}
# Real .NET SDK capstones: hosted + vendored nuget, one leg per SDK
# major (the suite pins the major through a sandbox global.json):
# the oldest and newest here, 7-9 on ubuntu in e2e-full.
Expand Down Expand Up @@ -1281,15 +1296,55 @@ jobs:
php-version: '8.2'
tools: composer:${{ matrix.composer }}

- name: Setup Java (Maven and Gradle legs)
if: matrix.maven != '' || matrix.gradle != ''
- name: Select the JVM toolchain (JVM legs)
id: jvm
if: matrix.jvm_tool != ''
# `jvm_tool` (gradle | maven | sbt) marks a JVM leg. The JDK comes
# from the runner image (JAVA_HOME_<N>_X64 / _arm64: 8, 11, 17 and 21
# on every hosted OS) when it has the pinned feature release, else
# from setup-java below. Maven is needed by the Maven legs and by the
# Gradle legs whose filter selects gradle_vendor_* (gradle_vendor_395
# builds the mixed root's pom with it). The multi-project capstone
# reads the Gradle cache and the agent / hosted Gradle legs run
# without Maven, so the windows multi-project row proves both.
shell: bash
env:
JVM_TOOL: ${{ matrix.jvm_tool }}
JAVA_FEATURE: ${{ matrix.java || '17' }}
TEST_FILTER: ${{ matrix.test_filter }}
run: |
set -euo pipefail
home=''
for arch in X64 arm64 ARM64; do
var="JAVA_HOME_${JAVA_FEATURE}_${arch}"
if [ -n "${!var:-}" ]; then home="${!var}"; break; fi
done
if [ -n "$home" ]; then
bin="$home/bin"
if [ "$RUNNER_OS" = Windows ]; then bin="$home\\bin"; fi
echo "JAVA_HOME=$home" >> "$GITHUB_ENV"
echo "$bin" >> "$GITHUB_PATH"
echo "runner-jdk=true" >> "$GITHUB_OUTPUT"
echo "JDK $JAVA_FEATURE from the runner image: $home"
else
echo "runner-jdk=false" >> "$GITHUB_OUTPUT"
fi
maven=false
case "$JVM_TOOL" in
maven) maven=true ;;
gradle) case " $TEST_FILTER " in *gradle_vendor_*) maven=true ;; esac ;;
esac
echo "maven=$maven" >> "$GITHUB_OUTPUT"

- name: Setup Java (JDK not on the runner image)
if: matrix.jvm_tool != '' && steps.jvm.outputs.runner-jdk != 'true'
uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # v6.0.1
with:
distribution: temurin
java-version: ${{ matrix.java || '17' }}

- name: Install Maven ${{ matrix.maven || '3.9.16' }}
if: matrix.maven != '' || matrix.gradle != ''
if: steps.jvm.outputs.maven == 'true'
# Straight from the Apache archive (sha512-verified), so a leg gets
# exactly the release it names rather than the runner's Maven.
shell: bash
Expand Down Expand Up @@ -1424,26 +1479,59 @@ jobs:
SOCKET_PATCH_BUNDLER_E2E_VERSION: ${{ matrix.bundler }}
SOCKET_PATCH_COMPOSER_E2E_REQUIRED: ${{ matrix.composer != '' && '1' || '' }}
SOCKET_PATCH_COMPOSER_E2E_VERSION: ${{ matrix.composer }}
SOCKET_PATCH_MAVEN_E2E_REQUIRED: ${{ (matrix.maven != '' || matrix.gradle != '') && '1' || '' }}
SOCKET_PATCH_MAVEN_E2E_VERSION: ${{ matrix.maven || (matrix.gradle != '' && '3.9.16') || '' }}
SOCKET_PATCH_MAVEN_E2E_REQUIRED: ${{ steps.jvm.outputs.maven == 'true' && '1' || '' }}
SOCKET_PATCH_MAVEN_E2E_VERSION: ${{ steps.jvm.outputs.maven == 'true' && (matrix.maven || '3.9.16') || '' }}
SOCKET_PATCH_GRADLE_E2E_REQUIRED: ${{ matrix.gradle != '' && '1' || '' }}
SOCKET_PATCH_GRADLE_E2E_VERSION: ${{ matrix.gradle }}
SOCKET_PATCH_GRADLE_E2E_PROBE_DIR: ${{ matrix.gradle != '' && format('{0}/target/gradle-probe', github.workspace) || '' }}
SOCKET_PATCH_DOTNET_E2E_REQUIRED: ${{ matrix.dotnet != '' && '1' || '' }}
SOCKET_PATCH_DOTNET_E2E_VERSION: ${{ matrix.dotnet }}
SOCKET_PATCH_DENO_E2E_REQUIRED: ${{ matrix.deno != '' && '1' || '' }}
SOCKET_PATCH_DENO_E2E_VERSION: ${{ matrix.deno }}
E2E_SUITE: ${{ matrix.suite }}
E2E_TEST_FILTER: ${{ matrix.test_filter || '--ignored' }}
E2E_JVM_TOOL: ${{ matrix.jvm_tool }}
E2E_ALLOW_EMPTY: ${{ matrix.allow_empty }}
shell: bash
# Runs from the package root with CARGO_MANIFEST_DIR set, as
# `cargo test` would.
# `cargo test` would. `suite` may name several binaries; an
# `allow_empty` row skips the ones whose test file has not landed.
# Every suite a Gradle leg runs must run at least one test (per
# suite, so one suite's tests never hide another's empty filter).
run: |
set -uo pipefail
exe=''
if [ "$RUNNER_OS" = Windows ]; then exe=.exe; fi
cd crates/socket-patch-cli
export CARGO_MANIFEST_DIR="$PWD"
# shellcheck disable=SC2086 # the filter is several libtest arguments
"../../target/e2e-bin/$E2E_SUITE$exe" $E2E_TEST_FILTER
status=0
for suite in $E2E_SUITE; do
if [ "$E2E_ALLOW_EMPTY" = true ] && [ ! -f "tests/$suite.rs" ] && [ ! -f "tests/$suite/main.rs" ]; then
echo "::notice::$suite has not landed yet; skipped (allow_empty)"
continue
fi
log="../../target/e2e-$suite.log"
# shellcheck disable=SC2086 # the filter is several libtest arguments
if ! "../../target/e2e-bin/$suite$exe" $E2E_TEST_FILTER 2>&1 | tee "$log"; then
status=1
continue
fi
passed=$(sed -n 's/^test result: .* \([0-9][0-9]*\) passed;.*/\1/p' "$log" | head -n 1)
if [ "$E2E_JVM_TOOL" = gradle ] && [ "${passed:-0}" = 0 ]; then
echo "::error::$suite ran no test in this Gradle leg ($E2E_TEST_FILTER)"
status=1
fi
done
exit "$status"

- name: Upload the Gradle probe reports
if: always() && matrix.gradle != ''
uses: ./.github/actions/upload-artifact
with:
name: gradle-probe-pr-${{ matrix.os }}-${{ matrix.gradle }}-${{ strategy.job-index }}
path: target/gradle-probe/
if-no-files-found: ignore
retention-days: 14

- name: Run vlt e2e tests
if: matrix.vlt != ''
Expand Down
Loading
Loading