diff --git a/CHANGELOG.md b/CHANGELOG.md index 86efe6c76..4115efb74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### Changed - Jenkins master and agent maintenance. Add Rhel9 variant and make it default ([#1361](https://github.com/opendevstack/ods-core/pull/1361)) - Update tailor to 1.4.0 ([#1373](https://github.com/opendevstack/ods-core/pull/1373)) +- Update Jenkins java version to jdk 21 ([#1374](https://github.com/opendevstack/ods-core/pull/1374)) ### Fixed diff --git a/jenkins/agent-base/Dockerfile.ubi8 b/jenkins/agent-base/Dockerfile.ubi8 index 6b6a21569..ccea18131 100644 --- a/jenkins/agent-base/Dockerfile.ubi8 +++ b/jenkins/agent-base/Dockerfile.ubi8 @@ -40,9 +40,9 @@ RUN chmod +x /usr/local/bin/use-j*.sh && \ chmod ugo+s /usr/local/bin/use-j*.sh && \ sh -c 'chmod ugo+s $(which alternatives)' && \ ls -la /usr/local/bin/use-j*.sh && \ - echo "--- STARTS JDK 17 TESTS ---" && \ - use-j17.sh && \ - echo "--- ENDS JDK 17 TESTS ---" + echo "--- STARTS JDK 21 TESTS ---" && \ + use-j21.sh && \ + echo "--- ENDS JDK 21 TESTS ---" COPY ./import_certs.sh /usr/local/bin/import_certs.sh COPY ./fix_java_certs_permissions.sh /usr/local/bin/fix_java_certs_permissions.sh diff --git a/jenkins/agent-base/Dockerfile.ubi9 b/jenkins/agent-base/Dockerfile.ubi9 index 7805c5e73..2f633c34d 100644 --- a/jenkins/agent-base/Dockerfile.ubi9 +++ b/jenkins/agent-base/Dockerfile.ubi9 @@ -40,9 +40,9 @@ RUN chmod +x /usr/local/bin/use-j*.sh && \ chmod ugo+s /usr/local/bin/use-j*.sh && \ sh -c 'chmod ugo+s $(which alternatives)' && \ ls -la /usr/local/bin/use-j*.sh && \ - echo "--- STARTS JDK 17 TESTS ---" && \ - use-j17.sh && \ - echo "--- ENDS JDK 17 TESTS ---" + echo "--- STARTS JDK 21 TESTS ---" && \ + source use-j21.sh && \ + echo "--- ENDS JDK 21 TESTS ---" COPY ./import_certs.sh /usr/local/bin/import_certs.sh COPY ./fix_java_certs_permissions.sh /usr/local/bin/fix_java_certs_permissions.sh diff --git a/jenkins/agent-base/ensure_java_jre_is_adequate.sh b/jenkins/agent-base/ensure_java_jre_is_adequate.sh index 0ce1a12a0..abf6bf715 100755 --- a/jenkins/agent-base/ensure_java_jre_is_adequate.sh +++ b/jenkins/agent-base/ensure_java_jre_is_adequate.sh @@ -3,8 +3,8 @@ set -eu -o pipefail ME="$(basename $0)" JAVA_INSTALLED_PKGS_LOGS="/tmp/java_installed_pkgs.log" -JAVA_17_INSTALLED_PKGS_LOGS="/tmp/java_17_installed_pkgs.log" -rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_17_INSTALLED_PKGS_LOGS} +JAVA_TARGET_INSTALLED_PKGS_LOGS="/tmp/java_target_installed_pkgs.log" +rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_TARGET_INSTALLED_PKGS_LOGS} NEEDS_DEVEL=${1-""} PKG_NAME_TAIL="headless" @@ -20,26 +20,26 @@ echo "${ME}: Needs development packages? ${NEEDS_DEVEL}" echo " " echo "${ME}: Listing versions of java installed: " yum list installed | grep -i "\(java\|jre\)" | tee -a ${JAVA_INSTALLED_PKGS_LOGS} -touch ${JAVA_17_INSTALLED_PKGS_LOGS} -grep -i "java-17" ${JAVA_INSTALLED_PKGS_LOGS} > ${JAVA_17_INSTALLED_PKGS_LOGS} || echo "No java 17 packages found." +touch ${JAVA_TARGET_INSTALLED_PKGS_LOGS} +grep -i "java-21" ${JAVA_INSTALLED_PKGS_LOGS} > ${JAVA_TARGET_INSTALLED_PKGS_LOGS} || echo "No java 21 packages found." NEEDS_INSTALLATION="true" -if [ -f ${JAVA_17_INSTALLED_PKGS_LOGS} ]; then - if grep -qi "${PKG_NAME_TAIL}" ${JAVA_17_INSTALLED_PKGS_LOGS} ; then +if [ -f ${JAVA_TARGET_INSTALLED_PKGS_LOGS} ]; then + if grep -qi "${PKG_NAME_TAIL}" ${JAVA_TARGET_INSTALLED_PKGS_LOGS} ; then NEEDS_INSTALLATION="false" fi fi # We need devel package in masters to have jar binary. if [ "true" == "${NEEDS_INSTALLATION}" ]; then - echo "${ME}:Java-17 is *not* installed. Installing..." + echo "${ME}:Java-21 is *not* installed. Installing..." if [ "true" == "${NEEDS_DEVEL}" ]; then - yum -y install java-17-openjdk-devel + yum -y install java-21-openjdk-devel else - yum -y install java-17-openjdk-headless + yum -y install java-21-openjdk-headless fi else - echo "${ME}: Java-17 is already installed." + echo "${ME}: Java-21 is already installed." fi if grep -qi "java-1.8" ${JAVA_INSTALLED_PKGS_LOGS} ; then @@ -56,14 +56,21 @@ else echo "${ME}: Java-11 is not installed. Correct." fi -if grep -qi "java-21" ${JAVA_INSTALLED_PKGS_LOGS} ; then - echo "${ME}: Java-21 is installed. Removing..." - yum -y remove java-21* +if grep -qi "java-17" ${JAVA_INSTALLED_PKGS_LOGS} ; then + echo "${ME}: Java-17 is installed. Removing..." + yum -y remove java-17* else - echo "${ME}: Java-21 is not installed. Correct." + echo "${ME}: Java-17 is not installed. Correct." fi -rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_17_INSTALLED_PKGS_LOGS} +if grep -qi "java-25" ${JAVA_INSTALLED_PKGS_LOGS} ; then + echo "${ME}: Java-25 is installed. Removing..." + yum -y remove java-25* +else + echo "${ME}: Java-25 is not installed. Correct." +fi + +rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_TARGET_INSTALLED_PKGS_LOGS} source /etc/profile.d/set-default-java.sh java -version diff --git a/jenkins/agent-base/set-default-java.sh b/jenkins/agent-base/set-default-java.sh index a01d520a1..5c27ec4d5 100644 --- a/jenkins/agent-base/set-default-java.sh +++ b/jenkins/agent-base/set-default-java.sh @@ -1,7 +1,8 @@ #!/bin/bash set -eu -o pipefail -JAVA_HOME_FOLDER=$(ls -lah /usr/lib/jvm | grep "java-17-openjdk-.*\.x86_64" | awk '{print $NF}' | head -1) +JAVA_VERSION="21" +JAVA_HOME_FOLDER=$(ls -lah /usr/lib/jvm | grep "java-${JAVA_VERSION}-openjdk-.*\.x86_64" | awk '{print $NF}' | head -1) export JAVA_HOME="/usr/lib/jvm/${JAVA_HOME_FOLDER}" -export USE_JAVA_VERSION=java-17 +export USE_JAVA_VERSION=java-${JAVA_VERSION} alternatives --set java ${JAVA_HOME}/bin/java diff --git a/jenkins/agent-base/use-j17.sh b/jenkins/agent-base/use-j21.sh similarity index 61% rename from jenkins/agent-base/use-j17.sh rename to jenkins/agent-base/use-j21.sh index 69c3805d8..dd8e506bd 100644 --- a/jenkins/agent-base/use-j17.sh +++ b/jenkins/agent-base/use-j21.sh @@ -1,7 +1,7 @@ #!/bin/bash -JAVA_HOME_FOLDER=$(ls -lah /usr/lib/jvm | grep "java-17-openjdk-.*\.x86_64" | awk '{print $NF}' | head -1) -JAVA_VERSION="17" +JAVA_VERSION="21" +JAVA_HOME_FOLDER=$(ls -lah /usr/lib/jvm | grep "java-${JAVA_VERSION}-openjdk-.*\.x86_64" | awk '{print $NF}' | head -1) function msg_and_exit() { echo "ERROR: ${1}" @@ -36,3 +36,16 @@ else msg_and_exit "Cannot configure JAVA_HOME environment variable to ${JAVA_HOME}" fi echo "JAVA_HOME: $JAVA_HOME" + +# If not sourced, print the export command so parent shell can eval it +if [ "${BASH_SOURCE[0]}" == "${0}" ]; then + echo "" + echo "=================================================================================" + echo "WARNING: Script executed as subprocess - JAVA_HOME will NOT persist!" + echo "-----" + echo "Usage Options:" + echo " Option 1 (source): source ${BASH_SOURCE[0]}" + echo " Option 2 (dot): . ${BASH_SOURCE[0]}" + echo "=================================================================================" + echo "" +fi diff --git a/jenkins/master/Dockerfile.ubi8 b/jenkins/master/Dockerfile.ubi8 index 47332ee83..11b71354c 100644 --- a/jenkins/master/Dockerfile.ubi8 +++ b/jenkins/master/Dockerfile.ubi8 @@ -1,6 +1,6 @@ FROM quay.io/openshift/origin-jenkins -ENV JAVA_HOME /usr/lib/jvm/jre-17 +ENV JAVA_HOME /usr/lib/jvm/jre-21 # ODS defaults, available to use within pipelines. ARG ODS_NAMESPACE diff --git a/jenkins/master/Dockerfile.ubi9 b/jenkins/master/Dockerfile.ubi9 index a8e9241b3..094cf6a00 100644 --- a/jenkins/master/Dockerfile.ubi9 +++ b/jenkins/master/Dockerfile.ubi9 @@ -1,6 +1,6 @@ FROM quay.io/openshift/origin-jenkins -ENV JAVA_HOME /usr/lib/jvm/jre-17 +ENV JAVA_HOME /usr/lib/jvm/jre-21 # ODS defaults, available to use within pipelines. ARG ODS_NAMESPACE diff --git a/jenkins/master/scripts_for_usr-local-bin/ensure_java_jre_is_adequate.sh b/jenkins/master/scripts_for_usr-local-bin/ensure_java_jre_is_adequate.sh index 9c0b3c23e..689040ffc 100755 --- a/jenkins/master/scripts_for_usr-local-bin/ensure_java_jre_is_adequate.sh +++ b/jenkins/master/scripts_for_usr-local-bin/ensure_java_jre_is_adequate.sh @@ -3,8 +3,8 @@ set -eu -o pipefail ME="$(basename $0)" JAVA_INSTALLED_PKGS_LOGS="/tmp/java_installed_pkgs.log" -JAVA_17_INSTALLED_PKGS_LOGS="/tmp/java_17_installed_pkgs.log" -rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_17_INSTALLED_PKGS_LOGS} +JAVA_TARGET_INSTALLED_PKGS_LOGS="/tmp/java_target_installed_pkgs.log" +rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_TARGET_INSTALLED_PKGS_LOGS} NEEDS_DEVEL=${1-""} PKG_NAME_TAIL="headless" @@ -20,26 +20,26 @@ echo "${ME}: Needs development packages? ${NEEDS_DEVEL}" echo " " echo "${ME}: Listing versions of java installed: " yum list installed | grep -i "\(java\|jre\)" | tee -a ${JAVA_INSTALLED_PKGS_LOGS} -touch ${JAVA_17_INSTALLED_PKGS_LOGS} -grep -i "java-17" ${JAVA_INSTALLED_PKGS_LOGS} > ${JAVA_17_INSTALLED_PKGS_LOGS} || echo "No java 17 packages found." +touch ${JAVA_TARGET_INSTALLED_PKGS_LOGS} +grep -i "java-21" ${JAVA_INSTALLED_PKGS_LOGS} > ${JAVA_TARGET_INSTALLED_PKGS_LOGS} || echo "No java 21 packages found." NEEDS_INSTALLATION="true" -if [ -f ${JAVA_17_INSTALLED_PKGS_LOGS} ]; then - if grep -qi "${PKG_NAME_TAIL}" ${JAVA_17_INSTALLED_PKGS_LOGS} ; then +if [ -f ${JAVA_TARGET_INSTALLED_PKGS_LOGS} ]; then + if grep -qi "${PKG_NAME_TAIL}" ${JAVA_TARGET_INSTALLED_PKGS_LOGS} ; then NEEDS_INSTALLATION="false" fi fi # We need devel package in masters to have jar binary. if [ "true" == "${NEEDS_INSTALLATION}" ]; then - echo "${ME}:Java-17 is *not* installed. Installing..." + echo "${ME}:Java-21 is *not* installed. Installing..." if [ "true" == "${NEEDS_DEVEL}" ]; then - yum -y install java-17-openjdk-devel + yum -y install java-21-openjdk-devel else - yum -y install java-17-openjdk-headless + yum -y install java-21-openjdk-headless fi else - echo "${ME}: Java-17 is already installed." + echo "${ME}: Java-21 is already installed." fi if grep -qi "java-1.8" ${JAVA_INSTALLED_PKGS_LOGS} ; then @@ -56,19 +56,26 @@ else echo "${ME}: Java-11 is not installed. Correct." fi -if grep -qi "java-21" ${JAVA_INSTALLED_PKGS_LOGS} ; then - echo "${ME}: Java-21 is installed. Removing..." - yum -y remove java-21* +if grep -qi "java-17" ${JAVA_INSTALLED_PKGS_LOGS} ; then + echo "${ME}: Java-17 is installed. Removing..." + yum -y remove java-17* else - echo "${ME}: Java-21 is not installed. Correct." + echo "${ME}: Java-17 is not installed. Correct." fi -rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_17_INSTALLED_PKGS_LOGS} +if grep -qi "java-25" ${JAVA_INSTALLED_PKGS_LOGS} ; then + echo "${ME}: Java-25 is installed. Removing..." + yum -y remove java-25* +else + echo "${ME}: Java-25 is not installed. Correct." +fi + +rm -fv ${JAVA_INSTALLED_PKGS_LOGS} ${JAVA_TARGET_INSTALLED_PKGS_LOGS} NO_JAVA_LINK="false" java -version || NO_JAVA_LINK="true" if [ "true" == "${NO_JAVA_LINK}" ]; then - JAVA_HOME_FOLDER=$(ls -lah /usr/lib/jvm | grep "java-17-openjdk-17.*\.x86_64" | awk '{print $NF}' | head -1) + JAVA_HOME_FOLDER=$(ls -lah /usr/lib/jvm | grep "java-21-openjdk-21.*\.x86_64" | awk '{print $NF}' | head -1) JAVA_HOME="/usr/lib/jvm/${JAVA_HOME_FOLDER}" alternatives --set java ${JAVA_HOME}/bin/java fi