diff --git a/ci/images/ci-image/Dockerfile b/ci/images/ci-image/Dockerfile index bb7c35e4af..3d2a1e3922 100644 --- a/ci/images/ci-image/Dockerfile +++ b/ci/images/ci-image/Dockerfile @@ -7,5 +7,6 @@ RUN ./setup.sh ENV JAVA_HOME /opt/openjdk/java17 ENV JDK17 /opt/openjdk/java17 ENV JDK21 /opt/openjdk/java21 +ENV JDK22 /opt/openjdk/java22 ENV PATH $JAVA_HOME/bin:$PATH diff --git a/ci/images/get-jdk-url.sh b/ci/images/get-jdk-url.sh index d84b6077ec..cdecc5f65b 100755 --- a/ci/images/get-jdk-url.sh +++ b/ci/images/get-jdk-url.sh @@ -8,6 +8,9 @@ case "$1" in java21) echo "https://download.bell-sw.com/java/21.0.1+12/bellsoft-jdk21.0.1+12-linux-amd64.tar.gz" ;; + java22) + echo "https://download.java.net/java/early_access/jdk22/19/GPL/openjdk-22-ea+19_linux-x64_bin.tar.gz" + ;; *) echo $"Unknown java version" exit 1 diff --git a/ci/images/setup.sh b/ci/images/setup.sh index 729d4b3925..77207dae49 100755 --- a/ci/images/setup.sh +++ b/ci/images/setup.sh @@ -20,7 +20,7 @@ curl https://raw.githubusercontent.com/spring-io/concourse-java-scripts/v0.0.4/c mkdir -p /opt/openjdk pushd /opt/openjdk > /dev/null -for jdk in java17 java21 +for jdk in java17 java21 java22 do JDK_URL=$( /get-jdk-url.sh $jdk ) mkdir $jdk diff --git a/ci/pipeline.yml b/ci/pipeline.yml index 96e10bb777..538d625557 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -121,6 +121,14 @@ resources: access_token: ((github-ci-status-token)) branch: ((branch)) context: jdk21-build +- name: repo-status-jdk22-build + type: github-status-resource + icon: eye-check-outline + source: + repository: ((github-repo-name)) + access_token: ((github-ci-status-token)) + branch: ((branch)) + context: jdk22-build - name: slack-alert type: slack-notification icon: slack @@ -241,6 +249,32 @@ jobs: <<: *slack-fail-params - put: repo-status-jdk21-build params: { state: "success", commit: "git-repo" } +- name: jdk22-build + serial: true + public: true + plan: + - get: ci-image + - get: git-repo + - put: repo-status-jdk22-build + params: { state: "pending", commit: "git-repo" } + - do: + - task: check-project + image: ci-image + file: git-repo/ci/tasks/check-project.yml + privileged: true + timeout: ((task-timeout)) + params: + TEST_TOOLCHAIN: 22 + <<: *build-project-task-params + on_failure: + do: + - put: repo-status-jdk22-build + params: { state: "failure", commit: "git-repo" } + - put: slack-alert + params: + <<: *slack-fail-params + - put: repo-status-jdk22-build + params: { state: "success", commit: "git-repo" } - name: stage-milestone serial: true plan: @@ -392,7 +426,7 @@ jobs: groups: - name: "builds" - jobs: ["build", "jdk21-build"] + jobs: ["build", "jdk21-build", "jdk22-build"] - name: "releases" jobs: ["stage-milestone", "stage-rc", "stage-release", "promote-milestone", "promote-rc", "promote-release", "create-github-release"] - name: "ci-images" diff --git a/ci/scripts/build-project.sh b/ci/scripts/build-project.sh index 16ff39b2be..ee784893c4 100755 --- a/ci/scripts/build-project.sh +++ b/ci/scripts/build-project.sh @@ -5,6 +5,6 @@ source $(dirname $0)/common.sh repository=$(pwd)/distribution-repository pushd git-repo > /dev/null -./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false -Porg.gradle.java.installations.fromEnv=JDK17,JDK21 \ +./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false -Porg.gradle.java.installations.fromEnv=JDK17,JDK21,JDK22 \ --no-daemon --max-workers=4 -PdeploymentRepository=${repository} build publishAllPublicationsToDeploymentRepository popd > /dev/null diff --git a/gradle/toolchains.gradle b/gradle/toolchains.gradle index 0faaae2548..c432d2735b 100644 --- a/gradle/toolchains.gradle +++ b/gradle/toolchains.gradle @@ -54,6 +54,11 @@ plugins.withType(JavaPlugin).configureEach { javaLauncher = javaToolchains.launcherFor { languageVersion = testLanguageVersion } + // Enable Java experimental support in Bytebuddy + // Remove when JDK 22 is supported by Mockito + if (testLanguageVersion == JavaLanguageVersion.of(22)) { + jvmArgs("-Dnet.bytebuddy.experimental=true") + } } } }