jenkinsci / docker

Docker official jenkins repo
https://hub.docker.com/r/jenkins/jenkins
MIT License
6.55k stars 4.47k forks source link

Remove Java 11 images on weekly release line #1891

Closed lemeurherve closed 3 weeks ago

lemeurherve commented 3 weeks ago

This PR removes the Java 11 images from the weekly release line by using new images definitions containing Java 11 for LTS release line until Java 17 is required on every lines. ("linux-lts-with-jdk11" docker bake target & "build-windows-lts-with-jdk11.yaml" docker compose file) See https://github.com/jenkinsci/docker/pull/1891/commits/97c732b4eae040616900a3707c425a85447b6492

It also add a mechanism to easily simulate a LTS build on ci.jenkins.io (with images publication disabled out of caution even if it happens on trusted.ci.jenkins.io) by setting in a replay SIMULATE_LTS_BUILD to true. See https://github.com/jenkinsci/docker/pull/1891/commits/dcbd563bad436ccdbae596cd68acfdb36548ed59?w=1

We can remove this code after Java 11 EOL.

Notes:

Fixes:

Testing done

Local tests

.ci/publis.sh ```console $ JENKINS_VERSION=2.442 make publish ./.ci/publish.sh Using the following settings: * JENKINS_REPO: jenkins/jenkins * JENKINS_VERSION: 2.442 * JENKINS_SHA: b0bc35b59ca923629cc440d79bebfa78d67cd0448c7a485168fc2719ac445e7b * COMMIT_SHA: dbc09a35f9008b00ed98e23de8a7598c5e1cb074 * LATEST_WEEKLY: false * LATEST_LTS: false * TARGET: linux #0 building with "desktop-linux" instance using docker driver <...> $ JENKINS_VERSION=2.452.1 make publish ./.ci/publish.sh Using the following settings: * JENKINS_REPO: jenkins/jenkins * JENKINS_VERSION: 2.452.1 * JENKINS_SHA: d9ec867a35987b545c82ed0df5d2240ac208a8d06e065e9cdb869464f3b87a56 * COMMIT_SHA: dbc09a35f9008b00ed98e23de8a7598c5e1cb074 * LATEST_WEEKLY: false * LATEST_LTS: true * TARGET: linux-lts-with-jdk11 #0 building with "desktop-linux" instance using docker driver <...> ```
"list" make function used by other make targets
With the same main architecture as agents: ```console $ ARCH=amd64 TARGET=linux make list + make --silent show + jq -r '.target | path(.. | select(.platforms[] | contains("linux/amd64"))?) | add' #1 [internal] load local bake definitions #1 reading docker-bake.hcl 10.42kB / 10.42kB done #1 DONE 0.0s alpine_jdk17 alpine_jdk21 debian_jdk17 debian_jdk21 debian_slim_jdk17 debian_slim_jdk21 rhel_ubi9_jdk17 rhel_ubi9_jdk21 $ ARCH=amd64 TARGET=linux-lts-with-jdk11 make list + make --silent show + jq -r '.target | path(.. | select(.platforms[] | contains("linux/amd64"))?) | add' #1 [internal] load local bake definitions #1 reading docker-bake.hcl 10.42kB / 10.42kB done #1 DONE 0.0s almalinux_jdk11 alpine_jdk21 debian_jdk11 debian_jdk17 debian_jdk21 debian_slim_jdk21 rhel_ubi8_jdk11 rhel_ubi9_jdk17 rhel_ubi9_jdk21 ```
Build tests depending on the bake target
With second call failing as expected: ```console $ ARCH=amd64 TARGET=linux-lts-with-jdk11 make build-debian_jdk11 $ ARCH=amd64 TARGET=linux make build-debian_jdk11 + make --silent show + jq -r '.target | path(.. | select(.platforms[] | contains("linux/amd64"))?) | add' #1 [internal] load local bake definitions #1 reading docker-bake.hcl 10.42kB / 10.42kB done #1 DONE 0.0s Error: the image 'debian_jdk11' does not exist in manifest for the platform 'linux/amd64'. Please check the output of 'make list'. Exiting. $ ARCH=amd64 TARGET=linux-lts-with-jdk11 make build-debian_jdk17 $ ARCH=arm64 TARGET=linux-lts-with-jdk11 make build-debian_jdk17 $ ARCH=amd64 TARGET=linux make build-debian_jdk17 $ ARCH=ard64 TARGET=linux make build-debian_jdk17 ```
make.ps1 ```console $ pwsh make.ps1 -JenkinsVersion 2.442 -DryRun = PREPARE: List of jenkins4eval/jenkins images and tags to be processed: name: jenkinsci-docker services: jdk17: build: context: /Users/veve/j-infra/jenkinsci-docker dockerfile: ./windows/windowsservercore/hotspot/Dockerfile args: COMMIT_SHA: dcbd563bad436ccdbae596cd68acfdb36548ed59 JAVA_HOME: C:/openjdk-17 JAVA_VERSION: 17.0.11_9 JENKINS_SHA: B0BC35B59CA923629CC440D79BEBFA78D67CD0448C7A485168FC2719AC445E7B JENKINS_VERSION: "2.442" TOOLS_WINDOWS_VERSION: "1809" WINDOWS_VERSION: ltsc2019 tags: - jenkins4eval/jenkins:2.442-jdk17-hotspot-windowsservercore-ltsc2019 - jenkins4eval/jenkins:2.442-windowsservercore-ltsc2019 - jenkins4eval/jenkins:windowsservercore-ltsc2019 image: jenkins4eval/jenkins:jdk17-hotspot-windowsservercore-ltsc2019 networks: default: null jdk21: build: context: /Users/veve/j-infra/jenkinsci-docker dockerfile: ./windows/windowsservercore/hotspot/Dockerfile args: COMMIT_SHA: dcbd563bad436ccdbae596cd68acfdb36548ed59 JAVA_HOME: C:/openjdk-21 JAVA_VERSION: 21.0.3_9 JENKINS_SHA: B0BC35B59CA923629CC440D79BEBFA78D67CD0448C7A485168FC2719AC445E7B JENKINS_VERSION: "2.442" TOOLS_WINDOWS_VERSION: "1809" WINDOWS_VERSION: ltsc2019 tags: - jenkins4eval/jenkins:2.442-jdk21-hotspot-windowsservercore-ltsc2019 - jenkins4eval/jenkins:2.442-windowsservercore-ltsc2019 - jenkins4eval/jenkins:windowsservercore-ltsc2019 image: jenkins4eval/jenkins:jdk21-hotspot-windowsservercore-ltsc2019 networks: default: null networks: default: name: jenkinsci-docker_default = BUILD: Building all images... (dry-run) docker-compose --file=build-windows.yaml build --parallel --pull = BUILD: Finished building all images. Build finished successfully ``` ```console $ pwsh make.ps1 -JenkinsVersion 2.452.1 -DryRun = PREPARE: List of jenkins4eval/jenkins images and tags to be processed: name: jenkinsci-docker services: jdk11: build: context: /Users/veve/j-infra/jenkinsci-docker dockerfile: ./windows/windowsservercore/hotspot/Dockerfile args: COMMIT_SHA: dcbd563bad436ccdbae596cd68acfdb36548ed59 JAVA_HOME: C:/openjdk-11 JAVA_VERSION: 11.0.23_9 JENKINS_SHA: D9EC867A35987B545C82ED0DF5D2240AC208A8D06E065E9CDB869464F3B87A56 JENKINS_VERSION: 2.452.1 TOOLS_WINDOWS_VERSION: "1809" WINDOWS_VERSION: ltsc2019 tags: - jenkins4eval/jenkins:2.452.1-jdk11-hotspot-windowsservercore-ltsc2019 image: jenkins4eval/jenkins:lts-jdk11-hotspot-windowsservercore-ltsc2019 networks: default: null jdk17: build: context: /Users/veve/j-infra/jenkinsci-docker dockerfile: ./windows/windowsservercore/hotspot/Dockerfile args: COMMIT_SHA: dcbd563bad436ccdbae596cd68acfdb36548ed59 JAVA_HOME: C:/openjdk-17 JAVA_VERSION: 17.0.11_9 JENKINS_SHA: D9EC867A35987B545C82ED0DF5D2240AC208A8D06E065E9CDB869464F3B87A56 JENKINS_VERSION: 2.452.1 TOOLS_WINDOWS_VERSION: "1809" WINDOWS_VERSION: ltsc2019 tags: - jenkins4eval/jenkins:2.452.1-jdk17-hotspot-windowsservercore-ltsc2019 - jenkins4eval/jenkins:2.452.1-windowsservercore-ltsc2019 - jenkins4eval/jenkins:lts-windowsservercore-ltsc2019 image: jenkins4eval/jenkins:lts-jdk17-hotspot-windowsservercore-ltsc2019 networks: default: null jdk21: build: context: /Users/veve/j-infra/jenkinsci-docker dockerfile: ./windows/windowsservercore/hotspot/Dockerfile args: COMMIT_SHA: dcbd563bad436ccdbae596cd68acfdb36548ed59 JAVA_HOME: C:/openjdk-21 JAVA_VERSION: 21.0.3_9 JENKINS_SHA: D9EC867A35987B545C82ED0DF5D2240AC208A8D06E065E9CDB869464F3B87A56 JENKINS_VERSION: 2.452.1 TOOLS_WINDOWS_VERSION: "1809" WINDOWS_VERSION: ltsc2019 tags: - jenkins4eval/jenkins:2.452.1-jdk21-hotspot-windowsservercore-ltsc2019 - jenkins4eval/jenkins:2.452.1-windowsservercore-ltsc2019 - jenkins4eval/jenkins:lts-windowsservercore-ltsc2019 image: jenkins4eval/jenkins:lts-jdk21-hotspot-windowsservercore-ltsc2019 networks: default: null networks: default: name: jenkinsci-docker_default = BUILD: Building all images... (dry-run) docker-compose --file=build-windows-lts-with-jdk11.yaml build --parallel --pull = BUILD: Finished building all images. Build finished successfully ```

On ci.jenkins.io

Submitter checklist

lemeurherve commented 3 weeks ago

@dduportal LGTM