Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
6 changes: 3 additions & 3 deletions jenkins/agent-base/Dockerfile.ubi8
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions jenkins/agent-base/Dockerfile.ubi9
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
37 changes: 22 additions & 15 deletions jenkins/agent-base/ensure_java_jre_is_adequate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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
Expand All @@ -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
5 changes: 3 additions & 2 deletions jenkins/agent-base/set-default-java.sh
Original file line number Diff line number Diff line change
@@ -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
17 changes: 15 additions & 2 deletions jenkins/agent-base/use-j17.sh → jenkins/agent-base/use-j21.sh
Original file line number Diff line number Diff line change
@@ -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}"
Expand Down Expand Up @@ -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
2 changes: 1 addition & 1 deletion jenkins/master/Dockerfile.ubi8
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion jenkins/master/Dockerfile.ubi9
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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
Expand All @@ -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
Expand Down
Loading