From 35454bd209f37f49b6b22c8929f813d3f5ab8ea7 Mon Sep 17 00:00:00 2001 From: Jonathan Dowland Date: Mon, 20 Oct 2025 10:10:49 -0400 Subject: [PATCH 1/4] [OPENJDK-4152] Add Maven 25 module Signed-off-by: Jonathan Dowland --- modules/maven/25/configure.sh | 12 ++++++++++++ modules/maven/25/module.yaml | 21 +++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100755 modules/maven/25/configure.sh create mode 100644 modules/maven/25/module.yaml diff --git a/modules/maven/25/configure.sh b/modules/maven/25/configure.sh new file mode 100755 index 00000000..84da8a53 --- /dev/null +++ b/modules/maven/25/configure.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e + +# This file is shipped by a Maven package and sets JAVA_HOME to +# an OpenJDK-specific path. This causes problems for OpenJ9 containers +# as the path is not correct for them. We don't need this in any of +# the containers because we set JAVA_HOME in the container metadata. +# Blank the file rather than removing it, to avoid a warning message +# from /usr/bin/mvn. +if [ -f /etc/java/maven.conf ]; then + :> /etc/java/maven.conf +fi diff --git a/modules/maven/25/module.yaml b/modules/maven/25/module.yaml new file mode 100644 index 00000000..8385287c --- /dev/null +++ b/modules/maven/25/module.yaml @@ -0,0 +1,21 @@ +schema_version: 1 +name: jboss.container.maven +version: '3.9.25' +description: Provides Maven v3.9 capabilities to an image. + +envs: +- name: JBOSS_CONTAINER_MAVEN_39_MODULE + value: /opt/jboss/container/maven/39/ +- name: MAVEN_VERSION + value: '3.9' + +modules: + install: + - name: jboss.container.maven.module + +packages: + install: + - maven-openjdk25 + +execute: +- script: configure.sh From 8088ee9f8eb6892bbe4722f6689d7840dd8c6241 Mon Sep 17 00:00:00 2001 From: Jonathan Dowland Date: Thu, 23 Oct 2025 08:19:12 -0400 Subject: [PATCH 2/4] [OPENJDK-4151] JDK25 image descriptors Signed-off-by: Jonathan Dowland --- redhat/ubi10-openjdk-25-runtime.yaml | 28 ++++++++++++ redhat/ubi10-openjdk-25.yaml | 29 ++++++++++++ ubi10-openjdk-25-runtime.yaml | 65 +++++++++++++++++++++++++++ ubi10-openjdk-25.yaml | 66 ++++++++++++++++++++++++++++ 4 files changed, 188 insertions(+) create mode 100644 redhat/ubi10-openjdk-25-runtime.yaml create mode 100644 redhat/ubi10-openjdk-25.yaml create mode 100644 ubi10-openjdk-25-runtime.yaml create mode 100644 ubi10-openjdk-25.yaml diff --git a/redhat/ubi10-openjdk-25-runtime.yaml b/redhat/ubi10-openjdk-25-runtime.yaml new file mode 100644 index 00000000..8ca1a293 --- /dev/null +++ b/redhat/ubi10-openjdk-25-runtime.yaml @@ -0,0 +1,28 @@ +osbs: + configuration: + container: + compose: + pulp_repos: false + packages: + - java-25-openjdk-headless + - maven-openjdk25 + signing_intent: unsigned + repository: + name: containers/openjdk + branch: openjdk-25-runtime-ubi10 + +packages: + manager: microdnf + content_sets: + x86_64: + - rhel-10-for-x86_64-baseos-rpms + - rhel-10-for-x86_64-appstream-rpms + ppc64le: + - rhel-10-for-ppc64le-baseos-rpms + - rhel-10-for-ppc64le-appstream-rpms + aarch64: + - rhel-10-for-aarch64-baseos-rpms + - rhel-10-for-aarch64-appstream-rpms + s390x: + - rhel-10-for-s390x-baseos-rpms + - rhel-10-for-s390x-appstream-rpms diff --git a/redhat/ubi10-openjdk-25.yaml b/redhat/ubi10-openjdk-25.yaml new file mode 100644 index 00000000..8a7e5a1e --- /dev/null +++ b/redhat/ubi10-openjdk-25.yaml @@ -0,0 +1,29 @@ +osbs: + configuration: + container: + compose: + pulp_repos: false + packages: + - java-25-openjdk + - java-25-openjdk-devel + - java-25-openjdk-headless + signing_intent: unsigned + repository: + name: containers/openjdk + branch: openjdk-25-ubi10 + +packages: + manager: microdnf + content_sets: + x86_64: + - rhel-10-for-x86_64-baseos-rpms + - rhel-10-for-x86_64-appstream-rpms + ppc64le: + - rhel-10-for-ppc64le-baseos-rpms + - rhel-10-for-ppc64le-appstream-rpms + aarch64: + - rhel-10-for-aarch64-baseos-rpms + - rhel-10-for-aarch64-appstream-rpms + s390x: + - rhel-10-for-s390x-baseos-rpms + - rhel-10-for-s390x-appstream-rpms diff --git a/ubi10-openjdk-25-runtime.yaml b/ubi10-openjdk-25-runtime.yaml new file mode 100644 index 00000000..91843f58 --- /dev/null +++ b/ubi10-openjdk-25-runtime.yaml @@ -0,0 +1,65 @@ +# This is an Image descriptor for Cekit + +schema_version: 1 + +from: "registry.access.redhat.com/ubi10/ubi-minimal" +name: &name "ubi10/openjdk-25-runtime" +version: &version "1.23" +description: "Image for Red Hat OpenShift providing OpenJDK 25 runtime" + +labels: +- name: "io.k8s.description" + value: "Platform for running plain Java applications (fat-jar and flat classpath)" +- name: "io.k8s.display-name" + value: "Java Applications" +- name: "io.openshift.tags" + value: "java" +- name: "maintainer" + value: "Red Hat OpenJDK " +- name: "com.redhat.component" + value: "openjdk-25-runtime-ubi10-container" +- name: "usage" + value: &docs "https://rh-openjdk.github.io/redhat-openjdk-containers/" +- name: "com.redhat.license_terms" + value: "https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI" +- name: "org.opencontainers.image.documentation" + value: *docs +- name: "name" + value: *name +- name: "version" + value: *version +- name: "org.opencontainers.image.source" + value: "https://github.com/rh-openjdk/redhat-openjdk-containers" +- name: "org.opencontainers.image.revision" + value: "ubi10" + +envs: + # XXX should this move to an s2i module? +- name: PATH + value: $PATH:"/usr/libexec/s2i" +- name: "JBOSS_IMAGE_NAME" + value: *name +- name: "JBOSS_IMAGE_VERSION" + value: *version +- name: "LANG" + value: "C.utf8" + +ports: +- value: 8080 +- value: 8443 + +modules: + repositories: + - path: modules + install: + - name: jboss.container.util.pkg-update + - name: jboss.container.tar + - name: jboss.container.openjdk.jre + version: "25" + - name: jboss.container.java.jre.run + +help: + add: true + +packages: + manager: microdnf diff --git a/ubi10-openjdk-25.yaml b/ubi10-openjdk-25.yaml new file mode 100644 index 00000000..06b7eccc --- /dev/null +++ b/ubi10-openjdk-25.yaml @@ -0,0 +1,66 @@ +# This is an Image descriptor for Cekit + +schema_version: 1 + +from: "registry.access.redhat.com/ubi10/ubi-minimal" +name: &name "ubi10/openjdk-25" +version: &version "1.23" +description: "Source To Image (S2I) image for Red Hat OpenShift providing OpenJDK 25" + +labels: +- name: "io.k8s.description" + value: "Platform for building and running plain Java applications (fat-jar and flat classpath)" +- name: "io.k8s.display-name" + value: "Java Applications" +- name: "io.openshift.tags" + value: "builder,java" +- name: "maintainer" + value: "Red Hat OpenJDK " +- name: "com.redhat.component" + value: "openjdk-25-ubi10-container" +- name: "usage" + value: &docs "https://rh-openjdk.github.io/redhat-openjdk-containers/" +- name: "com.redhat.license_terms" + value: "https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI" +- name: "org.opencontainers.image.documentation" + value: *docs +- name: "name" + value: *name +- name: "version" + value: *version +- name: "org.opencontainers.image.source" + value: "https://github.com/rh-openjdk/redhat-openjdk-containers" +- name: "org.opencontainers.image.revision" + value: "ubi10" + +envs: + # XXX should this move to an s2i module? +- name: PATH + value: $PATH:"/usr/libexec/s2i" +- name: "JBOSS_IMAGE_NAME" + value: *name +- name: "JBOSS_IMAGE_VERSION" + value: *version +- name: "LANG" + value: "C.utf8" + +ports: +- value: 8080 +- value: 8443 + +modules: + repositories: + - path: modules + install: + - name: jboss.container.util.pkg-update + - name: jboss.container.openjdk.jdk + version: "25" + - name: jboss.container.maven + version: "3.9.25" + - name: jboss.container.java.s2i.bash + +help: + add: true + +packages: + manager: microdnf From 5c7872b349a6ae8d371b832cff0fb2eedcb6b7b9 Mon Sep 17 00:00:00 2001 From: Jonathan Dowland Date: Mon, 17 Nov 2025 16:02:00 +0000 Subject: [PATCH 3/4] Install Maven w/o JDK25 module Not available yet. Co-install JDK21 and forcibly remove. Refresh singleton-jdk cekit module: The alternatives workaround is no longer needed. Signed-off-by: Jonathan Dowland --- modules/singleton-jdk/configure.sh | 8 -------- ubi10-openjdk-25.yaml | 3 ++- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/modules/singleton-jdk/configure.sh b/modules/singleton-jdk/configure.sh index 07b0eceb..0ad9ce4d 100755 --- a/modules/singleton-jdk/configure.sh +++ b/modules/singleton-jdk/configure.sh @@ -14,11 +14,3 @@ fi # Clean up any java-* packages that have been installed that do not match # our stated JAVA_VERSION-JAVA_VENDOR (e.g.: 11-openjdk; 1.8.0-openj9) rpm -e --nodeps $(rpm -qa java-* | grep -v "^java-${JAVA_VERSION}-${JAVA_VENDOR}") - -# workaround for -# The alternative link groups touched here need to match up with those set in -# modules/jdk/*/configure.sh -_arch="$(uname -i)" -for alt in java javac java_sdk_openjdk jre_openjdk; do - alternatives --set "$alt" "java-${JAVA_VERSION}-${JAVA_VENDOR}.${_arch}" -done diff --git a/ubi10-openjdk-25.yaml b/ubi10-openjdk-25.yaml index 06b7eccc..c03729a4 100644 --- a/ubi10-openjdk-25.yaml +++ b/ubi10-openjdk-25.yaml @@ -56,8 +56,9 @@ modules: - name: jboss.container.openjdk.jdk version: "25" - name: jboss.container.maven - version: "3.9.25" + version: "3.9.21" - name: jboss.container.java.s2i.bash + - name: jboss.container.java.singleton-jdk help: add: true From b991eb4115bea31881e8276da14c8c898da96c7a Mon Sep 17 00:00:00 2001 From: Jonathan Dowland Date: Mon, 17 Nov 2025 16:10:27 +0000 Subject: [PATCH 4/4] [OPENJDK-4191] Update JDK version check tests for JDK25 Signed-off-by: Jonathan Dowland --- modules/jdk/tests/features/openjdk.feature | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/modules/jdk/tests/features/openjdk.feature b/modules/jdk/tests/features/openjdk.feature index a6bc6b87..ff4d7780 100644 --- a/modules/jdk/tests/features/openjdk.feature +++ b/modules/jdk/tests/features/openjdk.feature @@ -9,6 +9,18 @@ Feature: Miscellaneous OpenJDK-related unit tests Then available container log should not contain java-1.8.0 Then available container log should not contain java-11 Then available container log should not contain java-17 + Then available container log should not contain java-25 + + @ubi10/openjdk-25 + @ubi10/openjdk-25-runtime + Scenario: Check that only OpenJDK 25 is installed + When container is started with args + | arg | value | + | command | rpm -qa | + Then available container log should not contain java-1.8.0 + Then available container log should not contain java-11 + Then available container log should not contain java-17 + Then available container log should not contain java-21 @ubi10 Scenario: Ensure JAVA_HOME is defined and contains Java @@ -35,6 +47,18 @@ Feature: Miscellaneous OpenJDK-related unit tests Then available container log should not contain java-1.8.0 Then available container log should not contain java-11 Then available container log should not contain java-17 + Then available container log should not contain java-25 + + @ubi10/openjdk-25 + @ubi10/openjdk-25-runtime + Scenario: Check that directories from other JDKs are not present (JDK25) + When container is started with args + | arg | value | + | command | ls -1 /usr/lib/jvm | + Then available container log should not contain java-1.8.0 + Then available container log should not contain java-11 + Then available container log should not contain java-17 + Then available container log should not contain java-21 @ubi10 Scenario: Ensure LANG is defined and contains UTF-8