Skip to content

Commit

Permalink
Merge pull request #1711 from gounthar/updatecli-for-java-manifests
Browse files Browse the repository at this point in the history
chore(dependencies): Updatecli manifests for JDK 11, 17 and 21.
  • Loading branch information
dduportal committed Sep 25, 2023
2 parents 715614b + e5d7b6c commit 1d54116
Show file tree
Hide file tree
Showing 5 changed files with 474 additions and 19 deletions.
32 changes: 13 additions & 19 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,8 @@ updates:
labels:
- dependencies
ignore:
# Ignore proposals to update to new major versions of Java
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"
update-types: ["version-update:semver-major"]

- package-ecosystem: docker
directory: "11/alpine/hotspot"
Expand All @@ -32,9 +31,8 @@ updates:
labels:
- dependencies
ignore:
# Ignore proposals to update to new major versions of Java
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"
update-types: ["version-update:semver-major"]

# AlmaLinux

Expand All @@ -50,8 +48,8 @@ updates:
labels:
- dependencies
ignore:
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"
update-types: ["version-update:semver-major"]
# Ignore proposals to update to Alma Linux 9 or later
- dependency-name: "almalinux"
update-types: ["version-update:semver-major"]
Expand All @@ -69,9 +67,8 @@ updates:
labels:
- dependencies
ignore:
# Ignore proposals to update to new major versions of Java
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"
update-types: ["version-update:semver-major"]

# Debian Linux

Expand All @@ -87,9 +84,8 @@ updates:
labels:
- dependencies
ignore:
# Ignore proposals to update to new major versions of Java
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"
update-types: ["version-update:semver-major"]

- package-ecosystem: docker
directory: "17/debian/bookworm-slim/hotspot"
Expand All @@ -103,9 +99,8 @@ updates:
labels:
- dependencies
ignore:
# Ignore proposals to update to new major versions of Java
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"
update-types: ["version-update:semver-major"]

- package-ecosystem: docker
directory: "11/debian/bookworm/hotspot"
Expand All @@ -119,9 +114,8 @@ updates:
labels:
- dependencies
ignore:
# Ignore proposals to update to new major versions of Java
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"
update-types: ["version-update:semver-major"]

- package-ecosystem: docker
directory: "11/debian/bookworm-slim/hotspot"
Expand All @@ -135,9 +129,8 @@ updates:
labels:
- dependencies
ignore:
# Ignore proposals to update to new major versions of Java
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"
update-types: ["version-update:semver-major"]

# RHEL UBI

Expand All @@ -153,9 +146,8 @@ updates:
labels:
- dependencies
ignore:
# Ignore proposals to update to new major versions of Java
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"
update-types: ["version-update:semver-major"]

- package-ecosystem: docker
directory: "17/rhel/ubi9/hotspot"
Expand All @@ -169,9 +161,8 @@ updates:
labels:
- dependencies
ignore:
# Ignore proposals to update to new major versions of Java
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"
update-types: ["version-update:semver-major"]

# Windows

Expand All @@ -185,6 +176,9 @@ updates:
- slide
labels:
- dependencies
ignore:
# Ignore proposals to update to new versions of Java because updatecli takes care of that.
- dependency-name: "eclipse-temurin"

# GitHub actions

Expand Down
73 changes: 73 additions & 0 deletions updatecli/scripts/check-jdk.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#!/bin/bash
# This script checks that the provided JDK version has all the required binaries available for downloads
# as sometimes, the tag for adoptium is published immeidatly while binaries are published later.
##
# The source of truth is the ERB template stored at the location dist/profile/templates/jenkinscontroller/casc/tools.yaml.erb
# It lists all the installations used as "Jenkins Tools" by the Jenkins controllers of the infrastructure
##
set -eu -o pipefail

command -v curl >/dev/null 2>&1 || { echo "ERROR: curl command not found. Exiting."; exit 1; }

function get_jdk_download_url() {
jdk_version="${1}"
platform="${2}"
case "${jdk_version}" in
8*)
## JDK8 does not have the carret ('-') in their archive names
echo "https://github.com/adoptium/temurin8-binaries/releases/download/jdk${jdk_version}/OpenJDK8U-jdk_${platform}_hotspot_${jdk_version//-}";
return 0;;
11*)
## JDK11 URLs have an underscore ('_') instead of a plus ('+') in their archive names
echo "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-${jdk_version}/OpenJDK11U-jdk_${platform}_hotspot_${jdk_version//+/_}";
return 0;;
17*)
## JDK17 URLs have an underscore ('_') instead of a plus ('+') in their archive names
echo "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-${jdk_version}/OpenJDK17U-jdk_${platform}_hotspot_${jdk_version//+/_}";
return 0;;
19*)
## JDK19 URLs have an underscore ('_') instead of a plus ('+') in their archive names
echo "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-${jdk_version}/OpenJDK19U-jdk_${platform}_hotspot_${jdk_version//+/_}";
return 0;;
21*)
# JDK version (21+35-ea-beta)
## https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21%2B35-ea-beta/OpenJDK21U-jdk_aarch64_linux_hotspot_ea_21-0-35.tar.gz
urlEncodedJDKVersion="${jdk_version//+/%2B}"
echo "https://github.com/adoptium/temurin21-binaries/releases/download/jdk-${urlEncodedJDKVersion}-ea-beta/OpenJDK21U-jdk_${platform}_hotspot_ea_21-0-$(echo ${jdk_version} | cut -d '+' -f 2 | cut -d '-' -f 1)"
return 0;;
*)
echo "ERROR: unsupported JDK version (${jdk_version}).";
exit 1;;
esac
}

case "${1}" in
8u*)
# No s390x support for JDK8: $platforms is kept as default
platforms=("x64_linux" "x64_windows" "aarch64_linux");;
11.*)
platforms=("x64_linux" "x64_windows" "aarch64_linux" "s390x_linux");;
17.*+*)
platforms=("x64_linux" "x64_windows" "aarch64_linux" "s390x_linux");;
19.*+*)
platforms=("x64_linux" "x64_windows" "aarch64_linux" "s390x_linux");;
21*+*)
platforms=("x64_linux" "x64_windows" "aarch64_linux" "s390x_linux");;
*)
echo "ERROR: unsupported JDK version (${1}).";
exit 1;;
esac

for platform in "${platforms[@]}"
do
url_to_check="$(get_jdk_download_url "${1}" "${platform}")"
if [[ "${platform}" == *windows* ]]
then
url_to_check+=".zip"
else
url_to_check+=".tar.gz"
fi
>&2 curl --connect-timeout 5 --location --head --fail --silent "${url_to_check}" || { echo "ERROR: the following URL is NOT available: ${url_to_check}."; exit 1; }
done

echo "OK: all JDK URL for version=${1} are available."
159 changes: 159 additions & 0 deletions updatecli/updatecli.d/jdk11.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
---
name: Bump JDK11 version

scms:
default:
kind: github
spec:
user: "{{ .github.user }}"
email: "{{ .github.email }}"
owner: "{{ .github.owner }}"
repository: "{{ .github.repository }}"
token: "{{ requiredEnv .github.token }}"
username: "{{ .github.username }}"
branch: "{{ .github.branch }}"

sources:
lastVersion:
kind: githubrelease
name: Get the latest Adoptium JDK11 version
spec:
owner: "adoptium"
repository: "temurin11-binaries"
token: "{{ requiredEnv .github.token }}"
username: "{{ .github.username }}"
versionfilter:
kind: regex
pattern: "^jdk-11.(\\d*).(\\d*).(\\d*)(.(\\d*))+(\\d*)$"
transformers:
- trimprefix: "jdk-"
- replacer:
from: +
to: _

conditions:
checkTemurinAlpineDockerImage:
kind: dockerimage
name: Check if the container image "eclipse-temurin:<lastVersion>-jdk-alpine" is available
disablesourceinput: true
spec:
architecture: amd64
image: eclipse-temurin
tag: '{{source "lastVersion" }}-jdk-alpine'
checkTemurinDebianDockerImages:
kind: dockerimage
name: Check if the container image "eclipse-temurin:<lastVersion>-jdk-jammy" is available
disablesourceinput: true
spec:
architectures:
- amd64
- arm64
- s390x
- linux/arm/v7
image: eclipse-temurin
tag: '{{source "lastVersion" }}-jdk-jammy'
checkTemurinNanoserver2019DockerImage:
kind: dockerimage
name: Check if the container image "eclipse-temurin:<lastVersion>-jdk-nanoserver-1809" is available
disablesourceinput: true
spec:
# architecture: amd64
image: eclipse-temurin
tag: '{{source "lastVersion" }}-jdk-nanoserver-1809'
checkTemurinWindowsCore2019DockerImage:
kind: dockerimage
name: Check if the container image "eclipse-temurin:<lastVersion>-jdk-windowsservercore-1809" is available
disablesourceinput: true
spec:
# architecture: amd64
image: eclipse-temurin
tag: '{{source "lastVersion" }}-jdk-windowsservercore-1809'
checkTemurinNanoserver2022DockerImage:
kind: dockerimage
name: Check if the container image "eclipse-temurin:<lastVersion>-jdk-nanoserver-ltsc2022" is available
disablesourceinput: true
spec:
# architecture: amd64
image: eclipse-temurin
tag: '{{source "lastVersion" }}-jdk-nanoserver-ltsc2022'
checkTemurinWindowsCore2022DockerImage:
kind: dockerimage
name: Check if the container image "eclipse-temurin:<lastVersion>-jdk-windowsservercore-18ltsc202209" is available
disablesourceinput: true
spec:
# architecture: amd64
image: eclipse-temurin
tag: '{{source "lastVersion" }}-jdk-windowsservercore-ltsc2022'

targets:
setJDK11VersionDockerBake:
name: "Bump JDK11 version for Linux images in the docker-bake.hcl file"
kind: hcl
spec:
file: docker-bake.hcl
path: variable.JAVA11_VERSION.default
scmid: default
setJDK11VersionAlmaLinux8:
name: "Bump JDK11 version for Linux images in the Alma Linux 8 Dockerfile"
kind: dockerfile
spec:
file: 11/almalinux/almalinux8/hotspot/Dockerfile
instruction:
keyword: ARG
matcher: JAVA_VERSION
scmid: default
setJDK11VersionAlpine:
name: "Bump JDK11 version for Linux images in the Alpine Linux Dockerfile"
kind: dockerfile
spec:
file: 11/alpine/hotspot/Dockerfile
instruction:
keyword: ARG
matcher: JAVA_VERSION
scmid: default
setJDK11VersionDebian:
name: "Bump JDK11 version for Linux images in the Debian Dockerfile"
kind: dockerfile
spec:
file: 11/debian/bookworm/hotspot/Dockerfile
instruction:
keyword: ARG
matcher: JAVA_VERSION
scmid: default
setJDK11VersionDebianSlim:
name: "Bump JDK11 version for Linux images in the Debian Slim Dockerfile"
kind: dockerfile
spec:
file: 11/debian/bookworm-slim/hotspot/Dockerfile
instruction:
keyword: ARG
matcher: JAVA_VERSION
scmid: default
setJDK11VersionRhel:
name: "Bump JDK11 version for Linux images in the Rhel Dockerfile"
kind: dockerfile
spec:
file: 11/rhel/ubi8/hotspot/Dockerfile
instruction:
keyword: ARG
matcher: JAVA_VERSION
scmid: default
setJDK11VersionWindows:
name: "Bump JDK11 version for Linux images in the Windows Dockerfile"
kind: dockerfile
spec:
file: 11/windows/windowsservercore-2019/hotspot/Dockerfile
instruction:
keyword: ARG
matcher: JAVA_VERSION
scmid: default

actions:
default:
kind: github/pullrequest
scmid: default
title: Bump JDK11 version to {{ source "lastVersion" }}
spec:
labels:
- dependencies
- jdk11
Loading

0 comments on commit 1d54116

Please sign in to comment.