From 39ea32b9026bb022aa3910756bcdade5075b63c1 Mon Sep 17 00:00:00 2001 From: George Adams Date: Thu, 10 Oct 2024 09:36:24 +0100 Subject: [PATCH 1/4] docker: switch to a bespoke test container --- buildenv/jenkins/JenkinsfileBase | 10 ++++++++-- buildenv/jenkins/openjdk_tests | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/buildenv/jenkins/JenkinsfileBase b/buildenv/jenkins/JenkinsfileBase index 0aef979b73..b2022ee001 100644 --- a/buildenv/jenkins/JenkinsfileBase +++ b/buildenv/jenkins/JenkinsfileBase @@ -105,8 +105,14 @@ def setupEnv() { env.EXIT_FAILURE = params.EXIT_FAILURE ? params.EXIT_FAILURE : false env.EXIT_SUCCESS = params.EXIT_SUCCESS ? params.EXIT_SUCCESS : false NUM_MACHINES = params.NUM_MACHINES ? params.NUM_MACHINES.toInteger() : 1 - env.LIB_DIR = JOB_NAME.contains("SmokeTests") ? "${WORKSPACE}/../../../../../externalDependency/lib" : "${WORKSPACE}/../../externalDependency/lib" - env.SYSTEM_LIB_DIR = JOB_NAME.contains("SmokeTests") ? "${WORKSPACE}/../../../../../externalDependency/system_lib" : "${WORKSPACE}/../../externalDependency/system_lib" + if (CLOUD_PROVIDER == 'azure') { + // Needs to be inside the workspace as the docker container won't have permissions to write to higher level directories + env.LIB_DIR = "${WORKSPACE}/externalDependency/lib" + env.SYSTEM_LIB_DIR = "${WORKSPACE}/externalDependency/system_lib" + } else { + env.LIB_DIR = JOB_NAME.contains("SmokeTests") ? "${WORKSPACE}/../../../../../externalDependency/lib" : "${WORKSPACE}/../../externalDependency/lib" + env.SYSTEM_LIB_DIR = JOB_NAME.contains("SmokeTests") ? "${WORKSPACE}/../../../../../externalDependency/system_lib" : "${WORKSPACE}/../../externalDependency/system_lib" + } env.OPENJCEPLUS_GIT_REPO = params.OPENJCEPLUS_GIT_REPO ?: "https://github.com/ibmruntimes/OpenJCEPlus.git" env.OPENJCEPLUS_GIT_BRANCH = params.OPENJCEPLUS_GIT_BRANCH ?: "semeru-java${params.JDK_VERSION}" env.PARALLEL = env.PARALLEL ? params.PARALLEL : "None" diff --git a/buildenv/jenkins/openjdk_tests b/buildenv/jenkins/openjdk_tests index e157ab96c1..482799c3c8 100644 --- a/buildenv/jenkins/openjdk_tests +++ b/buildenv/jenkins/openjdk_tests @@ -540,8 +540,8 @@ def runTest() { jenkinsfile = load "${WORKSPACE}/aqa-tests/buildenv/jenkins/JenkinsfileBase" if (LABEL.contains('ci.agent.dynamic') && CLOUD_PROVIDER.equals('azure')) { //Set dockerimage for azure agent. Fyre has stencil to setup the right environment - docker.image('adoptopenjdk/centos7_build_image').pull() - docker.image('adoptopenjdk/centos7_build_image').inside { + docker.image('ghcr.io/adoptium/test-containers:ubuntu2204').pull() + docker.image('ghcr.io/adoptium/test-containers:ubuntu2204').inside { jenkinsfile.testBuild() } } else if (dockerAgentLabel.equals('default') && LABEL.contains('&&sw.tool.docker') && SPEC.equals('linux_riscv64')) { From a02710ff80a0f1396256370ccef56b49e9e65176 Mon Sep 17 00:00:00 2001 From: George Adams Date: Wed, 16 Oct 2024 15:59:41 +0100 Subject: [PATCH 2/4] improve label detection --- buildenv/jenkins/openjdk_tests | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/buildenv/jenkins/openjdk_tests b/buildenv/jenkins/openjdk_tests index 482799c3c8..71caa2889b 100644 --- a/buildenv/jenkins/openjdk_tests +++ b/buildenv/jenkins/openjdk_tests @@ -538,8 +538,12 @@ def runTest() { sh "cat ${javaSecurityFile}" } jenkinsfile = load "${WORKSPACE}/aqa-tests/buildenv/jenkins/JenkinsfileBase" - if (LABEL.contains('ci.agent.dynamic') && CLOUD_PROVIDER.equals('azure')) { - //Set dockerimage for azure agent. Fyre has stencil to setup the right environment + // Check the node for full set of labels + def JobHelper = library(identifier: 'openjdk-jenkins-helper@master').JobHelper + def labels = JobHelper.getLabels(NODE_NAME) + + if (LABEL.contains('ci.agent.dynamic') && labels.contains('dynamicAzure')) { + // Set dockerimage for azure agent. Fyre has stencil to setup the right environment docker.image('ghcr.io/adoptium/test-containers:ubuntu2204').pull() docker.image('ghcr.io/adoptium/test-containers:ubuntu2204').inside { jenkinsfile.testBuild() From 76fe4974970385413c9dabd4669ba517724d872d Mon Sep 17 00:00:00 2001 From: George Adams Date: Wed, 16 Oct 2024 16:06:42 +0100 Subject: [PATCH 3/4] improve label detection --- buildenv/jenkins/openjdk_tests | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/buildenv/jenkins/openjdk_tests b/buildenv/jenkins/openjdk_tests index 71caa2889b..3128f33df6 100644 --- a/buildenv/jenkins/openjdk_tests +++ b/buildenv/jenkins/openjdk_tests @@ -538,11 +538,7 @@ def runTest() { sh "cat ${javaSecurityFile}" } jenkinsfile = load "${WORKSPACE}/aqa-tests/buildenv/jenkins/JenkinsfileBase" - // Check the node for full set of labels - def JobHelper = library(identifier: 'openjdk-jenkins-helper@master').JobHelper - def labels = JobHelper.getLabels(NODE_NAME) - - if (LABEL.contains('ci.agent.dynamic') && labels.contains('dynamicAzure')) { + if (LABEL.contains('ci.agent.dynamic') && CLOUD_PROVIDER.equals('azure')) { // Set dockerimage for azure agent. Fyre has stencil to setup the right environment docker.image('ghcr.io/adoptium/test-containers:ubuntu2204').pull() docker.image('ghcr.io/adoptium/test-containers:ubuntu2204').inside { From c3008673a0110712e032d345a9a3efc45488b064 Mon Sep 17 00:00:00 2001 From: Stewart X Addison Date: Thu, 4 Sep 2025 14:15:16 +0100 Subject: [PATCH 4/4] Switch default container to UBI10 and make XDG_RUNTIME_DIR dynamic Signed-off-by: Stewart X Addison --- buildenv/jenkins/JenkinsfileBase | 4 +++- buildenv/jenkins/openjdk_tests | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/buildenv/jenkins/JenkinsfileBase b/buildenv/jenkins/JenkinsfileBase index b2022ee001..161a7b0a97 100644 --- a/buildenv/jenkins/JenkinsfileBase +++ b/buildenv/jenkins/JenkinsfileBase @@ -791,9 +791,11 @@ def runTest( ) { } for (int i = 1; i <= ITERATIONS; i++) { echo "ITERATION: ${i}/${ITERATIONS}" - if (env.SPEC.contains('linux') && !(LABEL.contains('ci.agent.dynamic') && CLOUD_PROVIDER == 'azure') && (BUILD_LIST != "external")) { + if (env.SPEC.contains('linux') && (BUILD_LIST != "external")) { // Detect if Xvfb is on the machine, and if not use the wayland startup code (Initially for EL10) if ( sh(script:"which Xvfb 2>&1", returnStatus:true) != 0 ) { + env.XDG_RUNTIME_DIR = env.WORKSPACE + "/.xdg-runtime" + sh "mkdir -pm 0700 " + env.XDG_RUNTIME_DIR sh "weston --no-config --socket=wayland-vfb --backend=headless-backend.so --xwayland &" env.DISPLAY = ":0" diff --git a/buildenv/jenkins/openjdk_tests b/buildenv/jenkins/openjdk_tests index 3128f33df6..d450903b0c 100644 --- a/buildenv/jenkins/openjdk_tests +++ b/buildenv/jenkins/openjdk_tests @@ -540,8 +540,8 @@ def runTest() { jenkinsfile = load "${WORKSPACE}/aqa-tests/buildenv/jenkins/JenkinsfileBase" if (LABEL.contains('ci.agent.dynamic') && CLOUD_PROVIDER.equals('azure')) { // Set dockerimage for azure agent. Fyre has stencil to setup the right environment - docker.image('ghcr.io/adoptium/test-containers:ubuntu2204').pull() - docker.image('ghcr.io/adoptium/test-containers:ubuntu2204').inside { + docker.image('ghcr.io/adoptium/test-containers:ubi10').pull() + docker.image('ghcr.io/adoptium/test-containers:ubi10').inside { jenkinsfile.testBuild() } } else if (dockerAgentLabel.equals('default') && LABEL.contains('&&sw.tool.docker') && SPEC.equals('linux_riscv64')) {