Skip to content

Commit e92e5f0

Browse files
cristianrcvclaude
andcommitted
ci(build): bump JDK toolchain to 25 to fix native compile (COMP-1573)
The shadow-plugin migration for the log4j fix pulled in Gradle 9 and native-build-tools 1.1.3, whose GraalVM reachability-metadata repository requires a newer reachability-metadata schema than GraalVM for JDK 21 provides. CI `nativeCompile` failed on that schema mismatch. Bump the build toolchain to JDK 25 across the repo so the GraalVM reachability metadata schema is supported: - setup-graalvm / setup-java java-version 21 -> 25 in build.yml and security-submit-dependecy-graph.yml - Gradle toolchain and native launcher languageVersion 21 -> 25 - Groovy test deps 4.0.24 -> 4.0.32 (4.0.24 cannot compile against JDK 25 class files: "Unsupported class file major version 69") sourceCompatibility/targetCompatibility stay at 17, so the shipped fat jar still runs on JRE 17+. Also fix a pre-existing broken test-report artifact name that referenced the undefined matrix.java_version (collided across all OS jobs); use matrix.os to match the nativeCompile artifact naming. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 7201675 commit e92e5f0

4 files changed

Lines changed: 13 additions & 13 deletions

File tree

.github/workflows/build.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ jobs:
4040
- uses: graalvm/setup-graalvm@cabbb10818fabc989d6dbd508e4846596d20dd2d # v1.6.0
4141
if: ${{ matrix.musl }}
4242
with:
43-
java-version: '21'
43+
java-version: '25'
4444
github-token: ${{ secrets.GITHUB_TOKEN }}
4545
native-image-job-reports: 'true'
4646
native-image-musl: 'true'
4747

4848
- uses: graalvm/setup-graalvm@cabbb10818fabc989d6dbd508e4846596d20dd2d # v1.6.0
4949
if: ${{ !matrix.musl }}
5050
with:
51-
java-version: '21'
51+
java-version: '25'
5252
github-token: ${{ secrets.GITHUB_TOKEN }}
5353
native-image-job-reports: 'true'
5454

@@ -115,7 +115,7 @@ jobs:
115115
if: failure()
116116
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
117117
with:
118-
name: test-reports-jdk-${{ matrix.java_version }}
118+
name: test-reports-${{ matrix.os }}
119119
path: |
120120
**/build/reports/tests/test
121121
release:
@@ -138,7 +138,7 @@ jobs:
138138
- name: Setup Java for JReleaser
139139
uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4.8.0
140140
with:
141-
java-version: '21'
141+
java-version: '25'
142142
distribution: 'adopt'
143143

144144
- name: Version

.github/workflows/security-submit-dependecy-graph.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
1414
- uses: graalvm/setup-graalvm@cabbb10818fabc989d6dbd508e4846596d20dd2d # v1.6.0
1515
with:
16-
java-version: 21
16+
java-version: 25
1717

1818
- name: Generate and submit dependency graph for wave-cli
1919
uses: gradle/actions/dependency-submission@748248ddd2a24f49513d8f472f81c3a07d4d50e1 # v4.4.4

CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Wave CLI is a command-line tool for the Wave container provisioning service. It
1212
- Mirror containers between registries
1313
- Scan containers for security vulnerabilities
1414

15-
The CLI is built using Java 17 (with Java 21 toolchain) and compiles to a native binary using GraalVM.
15+
The CLI is built using Java 17 (with Java 25 toolchain) and compiles to a native binary using GraalVM.
1616

1717
## Architecture
1818

@@ -81,7 +81,7 @@ The project compiles to a native binary with specific configuration:
8181

8282
### Native Compilation
8383
```bash
84-
# Build native binary (requires GraalVM Java 21)
84+
# Build native binary (requires GraalVM Java 25)
8585
./gradlew app:nativeCompile
8686

8787
# Run the native binary

app/build.gradle

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77

88
java {
99
toolchain {
10-
languageVersion = JavaLanguageVersion.of(21)
10+
languageVersion = JavaLanguageVersion.of(25)
1111
}
1212
sourceCompatibility = 17
1313
targetCompatibility = 17
@@ -32,10 +32,10 @@ dependencies {
3232
// bump commons-io version to address security vulnerabilities
3333
runtimeOnly 'commons-io:commons-io:2.18.0'
3434

35-
testImplementation "org.apache.groovy:groovy:4.0.24"
36-
testImplementation "org.apache.groovy:groovy-nio:4.0.24"
37-
testImplementation "org.apache.groovy:groovy-test:4.0.24"
38-
testImplementation "org.apache.groovy:groovy-json:4.0.24"
35+
testImplementation "org.apache.groovy:groovy:4.0.32"
36+
testImplementation "org.apache.groovy:groovy-nio:4.0.32"
37+
testImplementation "org.apache.groovy:groovy-test:4.0.32"
38+
testImplementation "org.apache.groovy:groovy-json:4.0.32"
3939
testImplementation "net.bytebuddy:byte-buddy:1.14.11"
4040
testImplementation ("org.spockframework:spock-core:2.4-groovy-4.0") { exclude group: 'org.apache.groovy' }
4141
}
@@ -96,7 +96,7 @@ graalvmNative {
9696
}
9797

9898
javaLauncher = javaToolchains.launcherFor {
99-
languageVersion = JavaLanguageVersion.of(21)
99+
languageVersion = JavaLanguageVersion.of(25)
100100
vendor = JvmVendorSpec.matching("Oracle Corporation")
101101
}
102102
buildArgs.add('--enable-url-protocols=https')

0 commit comments

Comments
 (0)