diff --git a/ci/images/ci-image-jdk16/Dockerfile b/ci/images/ci-image-jdk16/Dockerfile new file mode 100644 index 000000000000..e648edbbcd9b --- /dev/null +++ b/ci/images/ci-image-jdk16/Dockerfile @@ -0,0 +1,12 @@ +FROM ubuntu:focal-20210119 + +ADD setup.sh /setup.sh +ADD get-jdk-url.sh /get-jdk-url.sh +ADD get-docker-url.sh /get-docker-url.sh +RUN ./setup.sh java8 java16 + +ENV JAVA_HOME /opt/openjdk +ENV PATH $JAVA_HOME/bin:$PATH +ADD docker-lib.sh /docker-lib.sh + +ENTRYPOINT [ "switch", "shell=/bin/bash", "--", "codep", "/bin/docker daemon" ] diff --git a/ci/images/get-jdk-url.sh b/ci/images/get-jdk-url.sh index 02d6b8f88975..7a18ea6093b1 100755 --- a/ci/images/get-jdk-url.sh +++ b/ci/images/get-jdk-url.sh @@ -11,6 +11,9 @@ case "$1" in java15) echo "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jdk_x64_linux_hotspot_15.0.2_7.tar.gz" ;; + java16) + echo "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk16-2021-03-04-10-39/OpenJDK16-jdk_x64_linux_hotspot_2021-03-04-10-39.tar.gz" + ;; *) echo $"Unknown java version" exit 1 diff --git a/ci/images/setup.sh b/ci/images/setup.sh index e2436a1c438b..ae07b52b03d6 100755 --- a/ci/images/setup.sh +++ b/ci/images/setup.sh @@ -26,6 +26,15 @@ curl -L ${JDK_URL} | tar zx --strip-components=1 test -f /opt/openjdk/bin/java test -f /opt/openjdk/bin/javac +if [[ $# -eq 2 ]]; then + TOOLCHAIN_JDK_URL=$( ./get-jdk-url.sh $2 ) + + mkdir -p /opt/openjdk-toolchain + cd /opt/openjdk-toolchain + curl -L ${TOOLCHAIN_JDK_URL} | tar zx --strip-components=1 + test -f /opt/openjdk-toolchain/bin/java + test -f /opt/openjdk-toolchain/bin/javac +fi ########################################################### # DOCKER diff --git a/ci/pipeline.yml b/ci/pipeline.yml index 7c3b2943bfe4..2eab896b52b5 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -162,6 +162,12 @@ resources: source: <<: *registry-image-resource-source repository: ((docker-hub-organization))/spring-boot-ci-jdk15 +- name: ci-image-jdk16 + type: registry-image + icon: docker + source: + <<: *registry-image-resource-source + repository: ((docker-hub-organization))/spring-boot-ci-jdk16 - name: artifactory-repo type: artifactory-resource icon: package-variant @@ -194,6 +200,14 @@ resources: access_token: ((github-ci-status-token)) branch: ((branch)) context: jdk15-build +- name: repo-status-jdk16-build + type: github-status-resource + icon: eye-check-outline + source: + repository: ((github-repo-name)) + access_token: ((github-ci-status-token)) + branch: ((branch)) + context: jdk16-build - name: slack-alert type: slack-notification icon: slack @@ -243,6 +257,13 @@ jobs: image: ci-image-jdk15 vars: ci-image-name: ci-image-jdk15 + - task: build-ci-image-jdk16 + privileged: true + file: git-repo/ci/tasks/build-ci-image.yml + output_mapping: + image: ci-image-jdk16 + vars: + ci-image-name: ci-image-jdk16 - in_parallel: - put: ci-image params: @@ -253,6 +274,9 @@ jobs: - put: ci-image-jdk15 params: image: ci-image-jdk15/image.tar + - put: ci-image-jdk16 + params: + image: ci-image-jdk16/image.tar - name: detect-jdk-updates plan: - get: git-repo @@ -278,6 +302,12 @@ jobs: params: <<: *github-task-params JDK_VERSION: java15 + - task: detect-jdk16-update + image: ci-image + file: git-repo/ci/tasks/detect-jdk-updates.yml + params: + <<: *github-task-params + JDK_VERSION: java16 - name: detect-ubuntu-image-updates plan: - get: git-repo @@ -415,6 +445,31 @@ jobs: - put: slack-alert params: <<: *slack-success-params +- name: jdk16-build + serial: true + public: true + plan: + - get: ci-image-jdk16 + - get: git-repo + trigger: true + - put: repo-status-jdk16-build + params: { state: "pending", commit: "git-repo" } + - do: + - task: build-project + image: ci-image-jdk16 + <<: *build-project-task-params + on_failure: + do: + - put: repo-status-jdk16-build + params: { state: "failure", commit: "git-repo" } + - put: slack-alert + params: + <<: *slack-fail-params + - put: repo-status-jdk16-build + params: { state: "success", commit: "git-repo" } + - put: slack-alert + params: + <<: *slack-success-params - name: windows-build serial: true plan: @@ -638,7 +693,7 @@ jobs: repository: updated-homebrew-tap-repo groups: - name: "builds" - jobs: ["build", "jdk11-build", "jdk15-build", "windows-build"] + jobs: ["build", "jdk11-build", "jdk15-build", "jdk16-build", "windows-build"] - name: "releases" jobs: ["stage-milestone", "stage-rc", "stage-release", "promote-milestone", "promote-rc", "promote-release", "create-github-release", "publish-to-sdkman", "update-homebrew-tap"] - name: "ci-images" diff --git a/ci/scripts/build-project.sh b/ci/scripts/build-project.sh index 3844d1a3ddb4..726ea1a429e8 100755 --- a/ci/scripts/build-project.sh +++ b/ci/scripts/build-project.sh @@ -5,5 +5,10 @@ source $(dirname $0)/common.sh repository=$(pwd)/distribution-repository pushd git-repo > /dev/null -./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false --no-daemon --max-workers=4 -PdeploymentRepository=${repository} build publishAllPublicationsToDeploymentRepository +if [[ -d /opt/openjdk-toolchain ]]; then + toolchain_java_version=$( ./$(dirname $0)/get-toolchain-java-version.sh ) + ./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false --no-daemon --max-workers=4 -PdeploymentRepository=${repository} build publishAllPublicationsToDeploymentRepository -PtoolchainVersion=${toolchain_java_version} -Porg.gradle.java.installations.auto-detect=false -Porg.gradle.java.installations.auto-download=false -Porg.gradle.java.installations.paths=/opt/openjdk-toolchain/ +else + ./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false --no-daemon --max-workers=4 -PdeploymentRepository=${repository} build publishAllPublicationsToDeploymentRepository +fi popd > /dev/null diff --git a/ci/scripts/detect-jdk-updates.sh b/ci/scripts/detect-jdk-updates.sh index 266d387b232e..bb135b3960d9 100755 --- a/ci/scripts/detect-jdk-updates.sh +++ b/ci/scripts/detect-jdk-updates.sh @@ -20,6 +20,10 @@ case "$JDK_VERSION" in BASE_URL="https://api.adoptopenjdk.net/v3/assets/feature_releases/15/ga" ISSUE_TITLE="Upgrade Java 15 version in CI image" ;; + java16) + BASE_URL="https://api.adoptopenjdk.net/v3/assets/feature_releases/16/ea" + ISSUE_TITLE="Upgrade Java 16 version in CI image" + ;; *) echo $"Unknown java version" exit 1; diff --git a/ci/scripts/get-toolchain-java-version.sh b/ci/scripts/get-toolchain-java-version.sh new file mode 100755 index 000000000000..1223f22ac7fd --- /dev/null +++ b/ci/scripts/get-toolchain-java-version.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +/opt/openjdk-toolchain/bin/java -XshowSettings:properties -version 2>&1 | grep "java.specification.version" | awk '{split($0,parts,"="); print parts[2]}' | awk '{$1=$1;print}'