From 013253a6aebd9c18595ad14eb4e12052077efeba Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Thu, 17 Dec 2020 11:20:23 +0100 Subject: [PATCH] Add multi-jdks build --- ci/images/README.adoc | 21 ++++++ ci/images/ci-image-jdk11/Dockerfile | 8 ++ ci/images/ci-image-jdk15/Dockerfile | 8 ++ ci/images/ci-image/Dockerfile | 3 +- ci/images/get-jdk-url.sh | 17 +++++ ci/images/setup.sh | 2 +- ci/pipeline.yml | 113 ++++++++++++++++++++++++++-- ci/tasks/build-ci-image.yml | 2 +- 8 files changed, 166 insertions(+), 8 deletions(-) create mode 100644 ci/images/README.adoc create mode 100644 ci/images/ci-image-jdk11/Dockerfile create mode 100644 ci/images/ci-image-jdk15/Dockerfile create mode 100755 ci/images/get-jdk-url.sh diff --git a/ci/images/README.adoc b/ci/images/README.adoc new file mode 100644 index 00000000..a2f45c56 --- /dev/null +++ b/ci/images/README.adoc @@ -0,0 +1,21 @@ +== CI Images + +These images are used by CI to run the actual builds. + +To build the image locally run the following from this directory: + +---- +$ docker build --no-cache -f /Dockerfile . +---- + +For example + +---- +$ docker build --no-cache -f ci-image/Dockerfile . +---- + +To test run: + +---- +$ docker run -it --entrypoint /bin/bash ✈ +---- diff --git a/ci/images/ci-image-jdk11/Dockerfile b/ci/images/ci-image-jdk11/Dockerfile new file mode 100644 index 00000000..78cbcd20 --- /dev/null +++ b/ci/images/ci-image-jdk11/Dockerfile @@ -0,0 +1,8 @@ +FROM ubuntu:focal-20201106 + +ADD setup.sh /setup.sh +ADD get-jdk-url.sh /get-jdk-url.sh +RUN ./setup.sh java11 + +ENV JAVA_HOME /opt/openjdk +ENV PATH $JAVA_HOME/bin:$PATH \ No newline at end of file diff --git a/ci/images/ci-image-jdk15/Dockerfile b/ci/images/ci-image-jdk15/Dockerfile new file mode 100644 index 00000000..d2f014f6 --- /dev/null +++ b/ci/images/ci-image-jdk15/Dockerfile @@ -0,0 +1,8 @@ +FROM ubuntu:focal-20201106 + +ADD setup.sh /setup.sh +ADD get-jdk-url.sh /get-jdk-url.sh +RUN ./setup.sh java15 + +ENV JAVA_HOME /opt/openjdk +ENV PATH $JAVA_HOME/bin:$PATH \ No newline at end of file diff --git a/ci/images/ci-image/Dockerfile b/ci/images/ci-image/Dockerfile index 14721f5b..3997523c 100644 --- a/ci/images/ci-image/Dockerfile +++ b/ci/images/ci-image/Dockerfile @@ -1,7 +1,8 @@ FROM ubuntu:focal-20201106 ADD setup.sh /setup.sh -RUN ./setup.sh +ADD get-jdk-url.sh /get-jdk-url.sh +RUN ./setup.sh java8 ENV JAVA_HOME /opt/openjdk ENV PATH $JAVA_HOME/bin:$PATH \ No newline at end of file diff --git a/ci/images/get-jdk-url.sh b/ci/images/get-jdk-url.sh new file mode 100755 index 00000000..76acc01c --- /dev/null +++ b/ci/images/get-jdk-url.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -e + +case "$1" in + java8) + echo "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u275-b01/OpenJDK8U-jdk_x64_linux_hotspot_8u275b01.tar.gz" + ;; + java11) + echo "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9.1%2B1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.9.1_1.tar.gz" + ;; + java15) + echo "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.1%2B9/OpenJDK15U-jdk_x64_linux_hotspot_15.0.1_9.tar.gz" + ;; + *) + echo $"Unknown java version" + exit 1 +esac diff --git a/ci/images/setup.sh b/ci/images/setup.sh index 55eebc58..bd8fa452 100755 --- a/ci/images/setup.sh +++ b/ci/images/setup.sh @@ -19,7 +19,7 @@ curl --output /opt/concourse-release-scripts.jar https://repo.spring.io/release/ ########################################################### # JAVA ########################################################### -JDK_URL=https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u275-b01/OpenJDK8U-jdk_x64_linux_hotspot_8u275b01.tar.gz +JDK_URL=$( ./get-jdk-url.sh $1 ) mkdir -p /opt/openjdk cd /opt/openjdk diff --git a/ci/pipeline.yml b/ci/pipeline.yml index def5be8b..df3ac263 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -107,6 +107,18 @@ resources: source: <<: *registry-image-resource-source repository: ((docker-hub-organization))/initializr-ci +- name: ci-image-jdk11 + type: registry-image + icon: docker + source: + <<: *registry-image-resource-source + repository: ((docker-hub-organization))/initializr-ci-jdk11 +- name: ci-image-jdk15 + type: registry-image + icon: docker + source: + <<: *registry-image-resource-source + repository: ((docker-hub-organization))/initializr-ci-jdk15 - name: artifactory-repo type: artifactory-resource icon: package-variant @@ -123,6 +135,22 @@ resources: access_token: ((github-ci-status-token)) branch: ((branch)) context: build +- name: repo-status-jdk11-build + type: github-status-resource + icon: eye-check-outline + source: + repository: ((github-repo-name)) + access_token: ((github-ci-status-token)) + branch: ((branch)) + context: jdk11-build +- name: repo-status-jdk15-build + type: github-status-resource + icon: eye-check-outline + source: + repository: ((github-repo-name)) + access_token: ((github-ci-status-token)) + branch: ((branch)) + context: jdk15-build - name: slack-alert type: slack-notification icon: slack @@ -138,15 +166,38 @@ jobs: - get: ci-images-git-repo trigger: true - get: git-repo - - do: + - in_parallel: - task: build-ci-image privileged: true file: git-repo/ci/tasks/build-ci-image.yml output_mapping: image: ci-image - - put: ci-image - params: - image: ci-image/image.tar + vars: + ci-image-name: ci-image + - task: build-ci-image-jdk11 + privileged: true + file: git-repo/ci/tasks/build-ci-image.yml + output_mapping: + image: ci-image-jdk11 + vars: + ci-image-name: ci-image-jdk11 + - task: build-ci-image-jdk15 + privileged: true + file: git-repo/ci/tasks/build-ci-image.yml + output_mapping: + image: ci-image-jdk15 + vars: + ci-image-name: ci-image-jdk15 + - in_parallel: + - put: ci-image + params: + image: ci-image/image.tar + - put: ci-image-jdk11 + params: + image: ci-image-jdk11/image.tar + - put: ci-image-jdk15 + params: + image: ci-image-jdk15/image.tar - name: build serial: true public: true @@ -180,6 +231,58 @@ jobs: - put: slack-alert params: <<: *slack-success-params +- name: jdk11-build + serial: true + public: true + plan: + - get: ci-image-jdk11 + - get: git-repo + - get: daily + trigger: true + - put: repo-status-jdk11-build + params: { state: "pending", commit: "git-repo" } + - do: + - task: build-project + image: ci-image-jdk11 + <<: *build-project-task-params + on_failure: + do: + - put: repo-status-jdk11-build + params: { state: "failure", commit: "git-repo" } + - put: slack-alert + params: + <<: *slack-fail-params + - put: repo-status-jdk11-build + params: { state: "success", commit: "git-repo" } + - put: slack-alert + params: + <<: *slack-success-params +- name: jdk15-build + serial: true + public: true + plan: + - get: ci-image-jdk15 + - get: git-repo + - get: daily + trigger: true + - put: repo-status-jdk15-build + params: { state: "pending", commit: "git-repo" } + - do: + - task: build-project + image: ci-image-jdk15 + <<: *build-project-task-params + on_failure: + do: + - put: repo-status-jdk15-build + params: { state: "failure", commit: "git-repo" } + - put: slack-alert + params: + <<: *slack-fail-params + - put: repo-status-jdk15-build + params: { state: "success", commit: "git-repo" } + - put: slack-alert + params: + <<: *slack-success-params - name: build-pull-requests serial: true public: true @@ -298,7 +401,7 @@ jobs: body: generated-changelog/changelog.md groups: - name: "build" - jobs: ["build", "windows-build"] + jobs: ["build", "jdk11-build", "jdk15-build", "windows-build"] - name: "releases" jobs: ["stage-release", "promote-release", "sync-to-maven-central"] - name: "ci-images" diff --git a/ci/tasks/build-ci-image.yml b/ci/tasks/build-ci-image.yml index da36e3bc..5b85abd9 100644 --- a/ci/tasks/build-ci-image.yml +++ b/ci/tasks/build-ci-image.yml @@ -12,7 +12,7 @@ caches: - path: ci-image-cache params: CONTEXT: ci-images-git-repo/ci/images - DOCKERFILE: ci-images-git-repo/ci/images/ci-image/Dockerfile + DOCKERFILE: ci-images-git-repo/ci/images/((ci-image-name))/Dockerfile REGISTRY_MIRRORS: ((docker-hub-mirror)) DOCKER_HUB_AUTH: ((docker-hub-auth)) run: