From ee059ae3ca81f65839caf076e042c0f92dfb134f Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 24 Aug 2026 14:52:36 +0100 Subject: [PATCH] Add CI for Java 27 Closes gh-51423 --- .github/workflows/ci.yml | 3 +++ .../boot/gradle/docs/AotDocumentationTests.java | 7 ++++--- .../boot/loader/LoaderIntegrationTests.java | 3 ++- .../boot/testsupport/gradle/testkit/GradleVersions.java | 3 +++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0905e0790f7..170afb87d60 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,9 @@ jobs: toolchain: false - version: 26 toolchain: true + - version: 27 + toolchain: true + early-access: true exclude: - os: name: Linux diff --git a/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/AotDocumentationTests.java b/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/AotDocumentationTests.java index 54beb9af816..f55e05b333d 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/AotDocumentationTests.java +++ b/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/AotDocumentationTests.java @@ -37,9 +37,10 @@ class AotDocumentationTests { @TestTemplate void applyNativeImagePlugin() { - assertThat(this.gradleBuild.script(Examples.DIR + "aot/apply-native-image-plugin").build("tasks").getOutput()) - .contains("nativeCompile") - .contains("aotClasses"); + assertThat(this.gradleBuild.expectDeprecationWarningsWithAtLeastVersion("9.7.0") + .script(Examples.DIR + "aot/apply-native-image-plugin") + .build("tasks") + .getOutput()).contains("nativeCompile").contains("aotClasses"); } @TestTemplate diff --git a/integration-test/spring-boot-loader-integration-tests/src/dockerTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java b/integration-test/spring-boot-loader-integration-tests/src/dockerTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java index 56c1fecd4e2..4686d10de8b 100644 --- a/integration-test/spring-boot-loader-integration-tests/src/dockerTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java +++ b/integration-test/spring-boot-loader-integration-tests/src/dockerTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java @@ -154,7 +154,8 @@ class LoaderIntegrationTests { javaRuntimes.add(JavaRuntime.openJdk(JavaVersion.TWENTY_THREE)); javaRuntimes.add(JavaRuntime.openJdk(JavaVersion.TWENTY_FOUR)); javaRuntimes.add(JavaRuntime.openJdk(JavaVersion.TWENTY_FIVE)); - javaRuntimes.add(JavaRuntime.openJdkEarlyAccess(JavaVersion.TWENTY_SIX)); + javaRuntimes.add(JavaRuntime.openJdk(JavaVersion.TWENTY_SIX)); + javaRuntimes.add(JavaRuntime.openJdkEarlyAccess(JavaVersion.TWENTY_SEVEN)); return javaRuntimes.stream().filter(JavaRuntime::isCompatible); } diff --git a/test-support/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java b/test-support/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java index 4bc69418026..66c22520f19 100644 --- a/test-support/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java +++ b/test-support/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java @@ -33,6 +33,9 @@ public final class GradleVersions { } public static List allCompatible() { + if (isJavaVersion(JavaVersion.VERSION_27)) { + return Arrays.asList("9.8.0-20260824065828+0000"); + } if (isJavaVersion(JavaVersion.VERSION_26)) { return Arrays.asList("9.4.0", GradleVersion.current().getVersion()); }