From 3e7d5d70ffdd9ab9e092492dcd093b3f8611938d Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Mon, 12 Jan 2026 13:15:49 +0530 Subject: [PATCH 01/27] updated jenkinsfile to support regressions on arm instances --- Jenkinsfile | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 159 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 080b15cf3..07209653d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,4 +1,4 @@ -@Library('shared-libraries') _ +@Library('shared-libraries@arminstances_aws_sharedlibraries') _ def getJavaHomePath() { if (env.JAVA_VERSION == "JAVA21") { @@ -170,7 +170,11 @@ pipeline { parameters { booleanParam(name: 'regressions', defaultValue: false, description: 'indicator if build is for regressions') + booleanParam(name: 'arm-regressions', defaultValue: false, description: 'indicator if build is for ARM regressions') + string(name: 'JAVA_VERSION', defaultValue: 'JAVA17', description: 'Either JAVA17 or JAVA21') + string(name: 'packagefile', defaultValue: 'Packagedependencies', description: 'package dependency file') + } environment { @@ -208,7 +212,7 @@ pipeline { echo "Run a test with the reverse proxy server to ensure it's fine." ./gradlew -PtestUseReverseProxyServer=true runReverseProxyServer marklogic-client-api-functionaltests:test --tests SearchWithPageLengthTest || true - ''' + ''' } post { always { @@ -294,5 +298,157 @@ pipeline { } } } + + stage('provisionInfrastructure'){ + when { + allOf { + branch 'develop' + expression { return params.arm-regressions } + } + } + agent {label 'javaClientLinuxPool'} + + steps{ + script { + def deploymentResult = deployAWSInstance([ + instanceName: "java-client-instance-${BUILD_NUMBER}", + region: 'us-west-2', + credentialsId: 'headlessDbUserEC2', + role: 'role-headless-testing', + roleAccount: '343869654284' + ]) + + echo "✅ Instance deployed: ${deploymentResult.privateIp}" + echo "✅ Terraform directory: ${deploymentResult.terraformDir}" + echo "✅ Workspace: ${deploymentResult.workspace}" + echo "✅ Status: ${deploymentResult.status}" + + // Store deployment info for cleanup + env.DEPLOYMENT_INSTANCE_NAME = deploymentResult.instanceName + env.DEPLOYMENT_REGION = deploymentResult.region + env.DEPLOYMENT_TERRAFORM_DIR = deploymentResult.terraformDir + env.EC2_PRIVATE_IP = deploymentResult.privateIp + } + } + } + stage('setupJenkinsAgent'){ + when { + allOf { + branch 'develop' + expression { return params.arm-regressions } + } + } + agent {label 'javaClientLinuxPool'} + steps{ + script { + def nodeName = "java-client-agent-${BUILD_NUMBER}" + def remoteFS = "/space/jenkins_home" + def labels = "java-client-agent-${BUILD_NUMBER}" + def instanceIp = env.EC2_PRIVATE_IP + + // Use shared library for volume attachment + def volumeResult = attachInstanceVolumes([ + instanceIp: instanceIp, + remoteFS: remoteFS, + packageFile: params.packagefile, + setupScriptPath: 'terraform-templates/arm-server-build/setup_volume.sh', + packageDir: 'terraform-templates/java-client-api' + ]) + + echo "✅ Volume attachment completed: ${volumeResult.volumeAttached}" + echo "✅ Java installed: ${volumeResult.javaInstalled}" + echo "✅ Dependencies installed: ${volumeResult.dependenciesInstalled}" + + // Use shared library to create Jenkins agent + def agentResult = createJenkinsAgent([ + nodeName: nodeName, + instanceIp: instanceIp, + remoteFS: remoteFS, + labels: labels, + timeoutMinutes: 5 + ]) + + echo "✅ Jenkins agent created: ${agentResult.nodeName}" + echo "✅ Agent status: ${agentResult.status}" + } + } + } + + stage('regressions-11 arm infrastructure') { + agent { label "java-client-agent-${BUILD_NUMBER}" } + when { + allOf { + expression {false} + branch 'develop' + expression { return params.arm-regressions } + } + } + steps { + checkout([$class: 'GitSCM', + branches: scm.branches, + doGenerateSubmoduleConfigurations: false, + extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'java-client-api']], + submoduleCfg: [], + userRemoteConfigs: scm.userRemoteConfigs]) + + runTests("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi-arm:latest-11") + } + post { + always { + junit '**/build/**/TEST*.xml' + updateWorkspacePermissions() + tearDownDocker() + } + } + } + } -} + + post{ + always { + script { + echo "🧹 Starting cleanup process..." + + try { + // Cleanup Terraform infrastructure first + if (env.EC2_PRIVATE_IP) { + echo "🗑️ Cleaning up Terraform resources..." + node('javaClientLinuxPool') { + try { + unstash "terraform-${BUILD_NUMBER}" + withAWS(credentials: 'headlessDbUserEC2', region: 'us-west-2', role: 'role-headless-testing', roleAccount: '343869654284', duration: 3600) { + sh '''#!/bin/bash + export PATH=/home/builder/terraform:$PATH + cd ${WORKSPACE}/${DEPLOYMENT_TERRAFORM_DIR} + terraform workspace select dev + terraform destroy -auto-approve + ''' + } + echo "✅ Terraform resources destroyed successfully." + } catch (Exception terraformException) { + echo "⚠️ Warning: Terraform cleanup failed: ${terraformException.message}" + } + } + } else { + echo "ℹ️ No EC2 instance IP found, skipping Terraform cleanup" + } + + // Cleanup Jenkins agent using shared library function + def nodeName = "java-client-agent-${BUILD_NUMBER}" + echo "🗑️ Cleaning up Jenkins agent: ${nodeName}" + try { + def cleanupResult = cleanupJenkinsAgent(nodeName) + echo "✅ Cleanup result: ${cleanupResult.status} for node: ${cleanupResult.nodeName}" + } catch (Exception jenkinsCleanupException) { + echo "⚠️ Warning: Jenkins agent cleanup failed: ${jenkinsCleanupException.message}" + } + echo "✅ Pipeline cleanup completed successfully." + + } catch (Exception cleanupException) { + echo "⚠️ Warning: Cleanup encountered an error: ${cleanupException.message}" + echo "📋 Continuing with pipeline completion despite cleanup issues..." + } + } + } + } +} \ No newline at end of file From 3869af818dc89917438d58f2d4d2bd927d232b2c Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Mon, 12 Jan 2026 13:29:24 +0530 Subject: [PATCH 02/27] added terraform-templates branch paramter for testing --- Jenkinsfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 07209653d..a4579aad1 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -171,9 +171,10 @@ pipeline { parameters { booleanParam(name: 'regressions', defaultValue: false, description: 'indicator if build is for regressions') booleanParam(name: 'arm-regressions', defaultValue: false, description: 'indicator if build is for ARM regressions') - string(name: 'JAVA_VERSION', defaultValue: 'JAVA17', description: 'Either JAVA17 or JAVA21') string(name: 'packagefile', defaultValue: 'Packagedependencies', description: 'package dependency file') + string(name: 'terraformBranch', defaultValue: 'master', description: 'Branch of terraform-templates repo to use') + } @@ -315,7 +316,8 @@ pipeline { region: 'us-west-2', credentialsId: 'headlessDbUserEC2', role: 'role-headless-testing', - roleAccount: '343869654284' + roleAccount: '343869654284', + branch: params.terraformBranch ]) echo "✅ Instance deployed: ${deploymentResult.privateIp}" From e34048e49f09b1be298cf0d81ddd77e940765910 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Mon, 12 Jan 2026 13:33:34 +0530 Subject: [PATCH 03/27] updated the branch conditions for arm stages --- Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index a4579aad1..d6e5269a7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -303,7 +303,7 @@ pipeline { stage('provisionInfrastructure'){ when { allOf { - branch 'develop' + branch 'arm-regressions-testbranch' expression { return params.arm-regressions } } } @@ -336,7 +336,7 @@ pipeline { stage('setupJenkinsAgent'){ when { allOf { - branch 'develop' + branch 'arm-regressions-testbranch' expression { return params.arm-regressions } } } @@ -381,7 +381,7 @@ pipeline { when { allOf { expression {false} - branch 'develop' + branch 'arm-regressions-testbranch' expression { return params.arm-regressions } } } From 51a364abcfde872227c44d32ceaff0830dd762fc Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Mon, 12 Jan 2026 18:44:05 +0530 Subject: [PATCH 04/27] updated the parameter --- Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d6e5269a7..af215539b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -170,7 +170,7 @@ pipeline { parameters { booleanParam(name: 'regressions', defaultValue: false, description: 'indicator if build is for regressions') - booleanParam(name: 'arm-regressions', defaultValue: false, description: 'indicator if build is for ARM regressions') + booleanParam(name: 'arm_regressions', defaultValue: false, description: 'indicator if build is for ARM regressions') string(name: 'JAVA_VERSION', defaultValue: 'JAVA17', description: 'Either JAVA17 or JAVA21') string(name: 'packagefile', defaultValue: 'Packagedependencies', description: 'package dependency file') string(name: 'terraformBranch', defaultValue: 'master', description: 'Branch of terraform-templates repo to use') @@ -304,7 +304,7 @@ pipeline { when { allOf { branch 'arm-regressions-testbranch' - expression { return params.arm-regressions } + expression { return params.arm_regressions } } } agent {label 'javaClientLinuxPool'} @@ -337,7 +337,7 @@ pipeline { when { allOf { branch 'arm-regressions-testbranch' - expression { return params.arm-regressions } + expression { return params.arm_regressions } } } agent {label 'javaClientLinuxPool'} @@ -382,7 +382,7 @@ pipeline { allOf { expression {false} branch 'arm-regressions-testbranch' - expression { return params.arm-regressions } + expression { return params.arm_regressions } } } steps { From bd249382da00de575117f4209d93b1dfc794d4f4 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Tue, 20 Jan 2026 16:03:58 +0530 Subject: [PATCH 05/27] fixed issues with jenkinsfile and also with docker compose platform condition --- Jenkinsfile | 41 +++++++++++++++++++++++++++++++++-------- docker-compose.yaml | 2 +- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index af215539b..613f9356f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,11 +1,22 @@ @Library('shared-libraries@arminstances_aws_sharedlibraries') _ def getJavaHomePath() { - if (env.JAVA_VERSION == "JAVA21") { - return "/home/builder/java/jdk-21.0.1" - } else { - return "/home/builder/java/jdk-17.0.2" - } + if (params.arm_regressions) { + // For ARM instances, Java is installed via Packagedependencies as java-17 + // Amazon Linux 2 installs Amazon Corretto Java in /usr/lib/jvm/ + if (env.JAVA_VERSION == "JAVA21") { + return "/usr/lib/jvm/java-21-amazon-corretto" + } else { + return "/usr/lib/jvm/java-17-amazon-corretto" + } + } else { + // For regular x86 instances + if (env.JAVA_VERSION == "JAVA21") { + return "/home/builder/java/jdk-21.0.1" + } else { + return "/home/builder/java/jdk-17.0.2" + } + } } def setupDockerMarkLogic(String image) { @@ -22,6 +33,16 @@ def setupDockerMarkLogic(String image) { MARKLOGIC_IMAGE=''' + image + ''' MARKLOGIC_LOGS_VOLUME=marklogicLogs docker compose up -d --build echo "Waiting for MarkLogic server to initialize." sleep 60s + + echo "Debugging Java installation on ARM instance:" + ls -la /usr/lib/jvm/ + readlink -f /usr/bin/java + echo "Current JAVA_HOME_DIR value: $JAVA_HOME_DIR" + ls -la $JAVA_HOME_DIR || echo "JAVA_HOME_DIR path does not exist" + echo "Verifying Docker Compose installation:" + docker compose version || echo "Docker Compose not available" + docker --version + export JAVA_HOME=$JAVA_HOME_DIR export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH @@ -300,7 +321,7 @@ pipeline { } } - stage('provisionInfrastructure'){ + tage('provisionInfrastructure'){ when { allOf { branch 'arm-regressions-testbranch' @@ -354,7 +375,11 @@ pipeline { remoteFS: remoteFS, packageFile: params.packagefile, setupScriptPath: 'terraform-templates/arm-server-build/setup_volume.sh', - packageDir: 'terraform-templates/java-client-api' + packageDir: 'terraform-templates/java-client-api', + additionalScriptsDir: 'terraform-templates/java-client-api/scripts', + additionalScriptsFile: 'terraform-templates/java-client-api/AdditionalScripts', + branch: params.terraformBranch + ]) echo "✅ Volume attachment completed: ${volumeResult.volumeAttached}" @@ -380,7 +405,6 @@ pipeline { agent { label "java-client-agent-${BUILD_NUMBER}" } when { allOf { - expression {false} branch 'arm-regressions-testbranch' expression { return params.arm_regressions } } @@ -417,6 +441,7 @@ pipeline { echo "🗑️ Cleaning up Terraform resources..." node('javaClientLinuxPool') { try { + sleep 300 unstash "terraform-${BUILD_NUMBER}" withAWS(credentials: 'headlessDbUserEC2', region: 'us-west-2', role: 'role-headless-testing', roleAccount: '343869654284', duration: 3600) { sh '''#!/bin/bash diff --git a/docker-compose.yaml b/docker-compose.yaml index 9d1dab27e..25dfd4043 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -4,7 +4,7 @@ services: marklogic: image: "${MARKLOGIC_IMAGE}" - platform: linux/amd64 + #platform: linux/amd64 environment: - INSTALL_CONVERTERS=true - MARKLOGIC_INIT=true From f5b9313493f44d9aede48da684b68cecb511c359 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Tue, 20 Jan 2026 16:05:41 +0530 Subject: [PATCH 06/27] fixed typo --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 613f9356f..322bb6505 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -321,7 +321,7 @@ pipeline { } } - tage('provisionInfrastructure'){ + stage('provisionInfrastructure'){ when { allOf { branch 'arm-regressions-testbranch' From 4623c0e027f6e1c382319f5217ad031e4f8fe51f Mon Sep 17 00:00:00 2001 From: nagalakshmi2024 Date: Tue, 20 Jan 2026 17:34:38 +0530 Subject: [PATCH 07/27] Update docker-compose.yaml --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 25dfd4043..9d1dab27e 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -4,7 +4,7 @@ services: marklogic: image: "${MARKLOGIC_IMAGE}" - #platform: linux/amd64 + platform: linux/amd64 environment: - INSTALL_CONVERTERS=true - MARKLOGIC_INIT=true From 2cdd3a9ef954fb97c10474c1e06e563bfda036bf Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 21 Jan 2026 10:59:19 +0530 Subject: [PATCH 08/27] created seperate docker-compose file for arm --- docker-compose-arm.yaml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 docker-compose-arm.yaml diff --git a/docker-compose-arm.yaml b/docker-compose-arm.yaml new file mode 100644 index 000000000..169bae1d8 --- /dev/null +++ b/docker-compose-arm.yaml @@ -0,0 +1,24 @@ +name: docker-tests-java-client + +services: + + marklogic: + image: "${MARKLOGIC_IMAGE}" + platform: linux/arm64 + environment: + - INSTALL_CONVERTERS=false + - MARKLOGIC_INIT=true + - MARKLOGIC_ADMIN_USERNAME=admin + - MARKLOGIC_ADMIN_PASSWORD=admin + # The NET_RAW capability allows a process to create raw sockets. Polaris does not like that. + # This setting removes the NET_RAW capability from the container. + cap_drop: + - NET_RAW + volumes: + - ${MARKLOGIC_LOGS_VOLUME}:/var/opt/MarkLogic/Logs + ports: + - "8000-8002:8000-8002" + - "8010-8015:8010-8015" # Range of ports used by app servers, at least one of which - 8015 - is created by a test. + +volumes: + marklogicLogs: From 00c9e6fceb88f4daa95bef16a9eb9c90355df709 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 21 Jan 2026 11:10:39 +0530 Subject: [PATCH 09/27] using custom docker compose file --- Jenkinsfile | 75 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 322bb6505..0b8697b8d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -20,35 +20,52 @@ def getJavaHomePath() { } def setupDockerMarkLogic(String image) { - cleanupDocker() - sh label: 'mlsetup', script: '''#!/bin/bash - echo "Removing any running MarkLogic server and clean up MarkLogic data directory" - sudo /usr/local/sbin/mladmin remove - sudo /usr/local/sbin/mladmin cleandata - cd java-client-api - docker compose down -v || true - docker volume prune -f - echo "Using image: "''' + image + ''' - docker pull ''' + image + ''' - MARKLOGIC_IMAGE=''' + image + ''' MARKLOGIC_LOGS_VOLUME=marklogicLogs docker compose up -d --build - echo "Waiting for MarkLogic server to initialize." - sleep 60s - - echo "Debugging Java installation on ARM instance:" - ls -la /usr/lib/jvm/ - readlink -f /usr/bin/java - echo "Current JAVA_HOME_DIR value: $JAVA_HOME_DIR" - ls -la $JAVA_HOME_DIR || echo "JAVA_HOME_DIR path does not exist" - echo "Verifying Docker Compose installation:" - docker compose version || echo "Docker Compose not available" - docker --version - - export JAVA_HOME=$JAVA_HOME_DIR - export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR - export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH - ./gradlew mlTestConnections - ./gradlew -i mlDeploy mlReloadSchemas - ''' + cleanupDocker() + sh label: 'mlsetup', script: '''#!/bin/bash + echo "Removing any running MarkLogic server and clean up MarkLogic data directory" + sudo /usr/local/sbin/mladmin remove + sudo /usr/local/sbin/mladmin cleandata + cd java-client-api + + # Use the ARM-specific compose file + docker compose -f docker-compose-arm.yaml down -v || true + docker volume prune -f + + echo "Using image: ''' + image + '''" + docker pull ''' + image + ''' + + MARKLOGIC_IMAGE=''' + image + ''' MARKLOGIC_LOGS_VOLUME=marklogicLogs \ + docker compose -f docker-compose-arm.yaml up -d --build + + echo "Waiting for MarkLogic to be ready..." + timeout=120 + count=0 + until $(curl --output /dev/null --silent --head --fail http://localhost:8001); do + ((count++)) + if [ $count -ge $timeout ]; then + echo "MarkLogic did not start in time!" + docker compose -f docker-compose-arm.yaml logs + exit 1 + fi + sleep 2 + done + echo "MarkLogic is ready." + + echo "Debugging Java installation on ARM instance:" + ls -la /usr/lib/jvm/ + readlink -f /usr/bin/java + echo "Current JAVA_HOME_DIR value: $JAVA_HOME_DIR" + ls -la $JAVA_HOME_DIR || echo "JAVA_HOME_DIR path does not exist" + echo "Verifying Docker Compose installation:" + docker compose version || echo "Docker Compose not available" + docker --version + + export JAVA_HOME=$JAVA_HOME_DIR + export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR + export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH + ./gradlew mlTestConnections + ./gradlew -i mlDeploy mlReloadSchemas + ''' } def runTests(String image) { From dcb08aca09715bfec1c60d2634f76111152bdaeb Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 21 Jan 2026 11:14:24 +0530 Subject: [PATCH 10/27] updated parameters --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0b8697b8d..0bc0b1f76 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -393,8 +393,8 @@ pipeline { packageFile: params.packagefile, setupScriptPath: 'terraform-templates/arm-server-build/setup_volume.sh', packageDir: 'terraform-templates/java-client-api', - additionalScriptsDir: 'terraform-templates/java-client-api/scripts', - additionalScriptsFile: 'terraform-templates/java-client-api/AdditionalScripts', + initScriptsDir: 'terraform-templates/java-client-api/scripts', + initScriptsFile: 'terraform-templates/java-client-api/initscripts', branch: params.terraformBranch ]) From 957b56041b0f8965f02406285361314e99482dae Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 21 Jan 2026 12:27:18 +0530 Subject: [PATCH 11/27] added wallet password for ML --- docker-compose-arm.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose-arm.yaml b/docker-compose-arm.yaml index 169bae1d8..ccbb9083f 100644 --- a/docker-compose-arm.yaml +++ b/docker-compose-arm.yaml @@ -10,6 +10,7 @@ services: - MARKLOGIC_INIT=true - MARKLOGIC_ADMIN_USERNAME=admin - MARKLOGIC_ADMIN_PASSWORD=admin + - MARKLOGIC_WALLET_PASSWORD=admin # The NET_RAW capability allows a process to create raw sockets. Polaris does not like that. # This setting removes the NET_RAW capability from the container. cap_drop: From 0e130f81678bbdfd09f6b7ec81bab302100379c8 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Thu, 22 Jan 2026 11:32:40 +0530 Subject: [PATCH 12/27] configured with ubi9-arm image --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0bc0b1f76..88bab0f8d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -434,7 +434,7 @@ pipeline { submoduleCfg: [], userRemoteConfigs: scm.userRemoteConfigs]) - runTests("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi-arm:latest-11") + runTests("ml-docker-db-dev-tierpoint.bed-artifactory.bedford.progress.com/marklogic/marklogic-server-ubi9-arm:latest-11") } post { always { From a5a4db0eff373ce271413d6cfc26a763ac22f617 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Fri, 23 Jan 2026 19:14:33 +0530 Subject: [PATCH 13/27] updated jenkinsfile , gradle properties to allow arm ec2 java installation paths to consider --- Jenkinsfile | 45 ++++++++++++++++++++++++--------------------- gradle.properties | 2 +- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 88bab0f8d..058e1392e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,15 +2,13 @@ def getJavaHomePath() { if (params.arm_regressions) { - // For ARM instances, Java is installed via Packagedependencies as java-17 - // Amazon Linux 2 installs Amazon Corretto Java in /usr/lib/jvm/ - if (env.JAVA_VERSION == "JAVA21") { - return "/usr/lib/jvm/java-21-amazon-corretto" - } else { - return "/usr/lib/jvm/java-17-amazon-corretto" + def version = (env.JAVA_VERSION == "JAVA21") ? "21" : "17" + def path = "/usr/lib/jvm/java-${version}-amazon-corretto.aarch64" + if (!fileExists(path)) { + error "Java home not found: ${path}" } + return path } else { - // For regular x86 instances if (env.JAVA_VERSION == "JAVA21") { return "/home/builder/java/jdk-21.0.1" } else { @@ -36,20 +34,20 @@ def setupDockerMarkLogic(String image) { MARKLOGIC_IMAGE=''' + image + ''' MARKLOGIC_LOGS_VOLUME=marklogicLogs \ docker compose -f docker-compose-arm.yaml up -d --build - echo "Waiting for MarkLogic to be ready..." - timeout=120 + timeout=180 count=0 - until $(curl --output /dev/null --silent --head --fail http://localhost:8001); do - ((count++)) - if [ $count -ge $timeout ]; then - echo "MarkLogic did not start in time!" - docker compose -f docker-compose-arm.yaml logs - exit 1 - fi - sleep 2 - done - echo "MarkLogic is ready." + until curl -u admin:admin --output /dev/null --silent --fail http://localhost:8001; do + + ((count++)) + if [ $count -ge $timeout ]; then + echo "MarkLogic did not start in time!" + docker compose -f docker-compose-arm.yaml logs + exit 1 + fi + sleep 5 + done + echo "MarkLogic is ready." echo "Debugging Java installation on ARM instance:" ls -la /usr/lib/jvm/ @@ -208,10 +206,10 @@ pipeline { parameters { booleanParam(name: 'regressions', defaultValue: false, description: 'indicator if build is for regressions') - booleanParam(name: 'arm_regressions', defaultValue: false, description: 'indicator if build is for ARM regressions') + booleanParam(name: 'arm_regressions', defaultValue: true, description: 'indicator if build is for ARM regressions') string(name: 'JAVA_VERSION', defaultValue: 'JAVA17', description: 'Either JAVA17 or JAVA21') string(name: 'packagefile', defaultValue: 'Packagedependencies', description: 'package dependency file') - string(name: 'terraformBranch', defaultValue: 'master', description: 'Branch of terraform-templates repo to use') + string(name: 'terraformBranch', defaultValue: 'create-packagedependencies-javaclientapi', description: 'Branch of terraform-templates repo to use') } @@ -226,7 +224,9 @@ pipeline { stages { stage('pull-request-tests') { + when { + expression { false } not { expression { return params.regressions } } @@ -263,6 +263,7 @@ pipeline { } stage('publish') { when { + expression { false } branch 'develop' not { expression { return params.regressions } @@ -285,6 +286,7 @@ pipeline { allOf { branch 'develop' expression { return params.regressions } + expression { false } } } steps { @@ -324,6 +326,7 @@ pipeline { allOf { branch 'develop' expression { return params.regressions } + expression { false } } } steps { diff --git a/gradle.properties b/gradle.properties index dc8a5f9c0..de7eb4937 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,4 +23,4 @@ cloudBasePath= # See https://docs.gradle.org/current/userguide/toolchains.html#sec:custom_loc for information # on custom toolchain locations in Gradle. Adding these to try to make Jenkins happy. org.gradle.java.installations.fromEnv=JAVA_HOME_DIR -org.gradle.java.installations.paths=/home/builder/java/jdk-17.0.2,/home/builder/java/jdk-21.0.1 +org.gradle.java.installations.paths=/home/builder/java/jdk-17.0.2,/home/builder/java/jdk-21.0.1,/usr/lib/jvm/java-17-amazon-corretto.aarch64,/usr/lib/jvm/java-21-amazon-corretto.aarch64 From a87c906d74de12506b54e83f0d1a2fae24ee8866 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Fri, 23 Jan 2026 19:36:51 +0530 Subject: [PATCH 14/27] removed error step --- Jenkinsfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 058e1392e..fa460a573 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,9 +4,6 @@ def getJavaHomePath() { if (params.arm_regressions) { def version = (env.JAVA_VERSION == "JAVA21") ? "21" : "17" def path = "/usr/lib/jvm/java-${version}-amazon-corretto.aarch64" - if (!fileExists(path)) { - error "Java home not found: ${path}" - } return path } else { if (env.JAVA_VERSION == "JAVA21") { From 97fd185a8a98d37cb24b3ee13c04b416c8b990d6 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Fri, 23 Jan 2026 21:05:44 +0530 Subject: [PATCH 15/27] commented org.gradle.java.installations.fromEnv=JAVA_HOME_DIR in the gradle.properties file --- gradle.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index de7eb4937..8d5a76730 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,5 +22,6 @@ cloudBasePath= # See https://docs.gradle.org/current/userguide/toolchains.html#sec:custom_loc for information # on custom toolchain locations in Gradle. Adding these to try to make Jenkins happy. -org.gradle.java.installations.fromEnv=JAVA_HOME_DIR +#commented out to try to fix api tests on arm instances +#org.gradle.java.installations.fromEnv=JAVA_HOME_DIR org.gradle.java.installations.paths=/home/builder/java/jdk-17.0.2,/home/builder/java/jdk-21.0.1,/usr/lib/jvm/java-17-amazon-corretto.aarch64,/usr/lib/jvm/java-21-amazon-corretto.aarch64 From d282b0908ec8905b88e67e63a8ea0a7f107edfd0 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Fri, 23 Jan 2026 21:30:27 +0530 Subject: [PATCH 16/27] updated java installation path to arm aarch64 java path --- gradle.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 8d5a76730..ee9a1dc83 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,4 +24,5 @@ cloudBasePath= # on custom toolchain locations in Gradle. Adding these to try to make Jenkins happy. #commented out to try to fix api tests on arm instances #org.gradle.java.installations.fromEnv=JAVA_HOME_DIR -org.gradle.java.installations.paths=/home/builder/java/jdk-17.0.2,/home/builder/java/jdk-21.0.1,/usr/lib/jvm/java-17-amazon-corretto.aarch64,/usr/lib/jvm/java-21-amazon-corretto.aarch64 +#org.gradle.java.installations.paths=/home/builder/java/jdk-17.0.2,/home/builder/java/jdk-21.0.1,/usr/lib/jvm/java-17-amazon-corretto.aarch64,/usr/lib/jvm/java-21-amazon-corretto.aarch64 +org.gradle.java.installations.paths=/usr/lib/jvm/java-17-amazon-corretto.aarch64 From 676d3dbfe742097edc6b8c84dae582cb85a7758b Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Tue, 27 Jan 2026 10:19:38 +0530 Subject: [PATCH 17/27] updated gradle properties --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index ee9a1dc83..1c2326146 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,6 +23,6 @@ cloudBasePath= # See https://docs.gradle.org/current/userguide/toolchains.html#sec:custom_loc for information # on custom toolchain locations in Gradle. Adding these to try to make Jenkins happy. #commented out to try to fix api tests on arm instances -#org.gradle.java.installations.fromEnv=JAVA_HOME_DIR +org.gradle.java.installations.fromEnv=JAVA_HOME_DIR #org.gradle.java.installations.paths=/home/builder/java/jdk-17.0.2,/home/builder/java/jdk-21.0.1,/usr/lib/jvm/java-17-amazon-corretto.aarch64,/usr/lib/jvm/java-21-amazon-corretto.aarch64 -org.gradle.java.installations.paths=/usr/lib/jvm/java-17-amazon-corretto.aarch64 +# org.gradle.java.installations.paths=/usr/lib/jvm/java-17-amazon-corretto.aarch64 From f57184163fd3eddc5e09e99cf3bf66ce853b2308 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Tue, 27 Jan 2026 15:43:06 +0530 Subject: [PATCH 18/27] using existing org.gradle.java.installations.paths --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 1c2326146..b3e0bff57 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,5 +24,5 @@ cloudBasePath= # on custom toolchain locations in Gradle. Adding these to try to make Jenkins happy. #commented out to try to fix api tests on arm instances org.gradle.java.installations.fromEnv=JAVA_HOME_DIR -#org.gradle.java.installations.paths=/home/builder/java/jdk-17.0.2,/home/builder/java/jdk-21.0.1,/usr/lib/jvm/java-17-amazon-corretto.aarch64,/usr/lib/jvm/java-21-amazon-corretto.aarch64 +org.gradle.java.installations.paths=/home/builder/java/jdk-17.0.2,/home/builder/java/jdk-21.0.1 # org.gradle.java.installations.paths=/usr/lib/jvm/java-17-amazon-corretto.aarch64 From 35d011942faf375552216cc3c22409302194ad8f Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 28 Jan 2026 13:19:23 +0530 Subject: [PATCH 19/27] using platform specific variables in docker compose file --- Jenkinsfile | 22 +++++++++++++++++----- docker-compose-arm.yaml | 25 ------------------------- docker-compose.yaml | 4 ++-- gradle.properties | 2 -- 4 files changed, 19 insertions(+), 34 deletions(-) delete mode 100644 docker-compose-arm.yaml diff --git a/Jenkinsfile b/Jenkinsfile index fa460a573..e91a21dcc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,6 +14,14 @@ def getJavaHomePath() { } } +def getPlatform() { + return params.arm_regressions ? "linux/arm64" : "linux/amd64" +} + +def setConverters() { + return params.arm_regressions ? "false" :"true" +} + def setupDockerMarkLogic(String image) { cleanupDocker() sh label: 'mlsetup', script: '''#!/bin/bash @@ -21,16 +29,17 @@ def setupDockerMarkLogic(String image) { sudo /usr/local/sbin/mladmin remove sudo /usr/local/sbin/mladmin cleandata cd java-client-api - + export PLATFORM=$PLATFORM + export SET_CONVERTERS=$SET_CONVERTERS # Use the ARM-specific compose file - docker compose -f docker-compose-arm.yaml down -v || true + docker compose down -v || true docker volume prune -f echo "Using image: ''' + image + '''" docker pull ''' + image + ''' MARKLOGIC_IMAGE=''' + image + ''' MARKLOGIC_LOGS_VOLUME=marklogicLogs \ - docker compose -f docker-compose-arm.yaml up -d --build + docker compose up -d --build echo "Waiting for MarkLogic to be ready..." timeout=180 count=0 @@ -39,7 +48,7 @@ def setupDockerMarkLogic(String image) { ((count++)) if [ $count -ge $timeout ]; then echo "MarkLogic did not start in time!" - docker compose -f docker-compose-arm.yaml logs + docker compose logs exit 1 fi sleep 5 @@ -216,6 +225,8 @@ pipeline { GRADLE_DIR = ".gradle" DMC_USER = credentials('MLBUILD_USER') DMC_PASSWORD = credentials('MLBUILD_PASSWORD') + PLATFORM = getPlatform() + SET_CONVERTERS = setConverters() } stages { @@ -409,7 +420,8 @@ pipeline { instanceIp: instanceIp, remoteFS: remoteFS, labels: labels, - timeoutMinutes: 5 + timeoutMinutes: 5, + credentialsId: 'qa-builder-aws' ]) echo "✅ Jenkins agent created: ${agentResult.nodeName}" diff --git a/docker-compose-arm.yaml b/docker-compose-arm.yaml deleted file mode 100644 index ccbb9083f..000000000 --- a/docker-compose-arm.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: docker-tests-java-client - -services: - - marklogic: - image: "${MARKLOGIC_IMAGE}" - platform: linux/arm64 - environment: - - INSTALL_CONVERTERS=false - - MARKLOGIC_INIT=true - - MARKLOGIC_ADMIN_USERNAME=admin - - MARKLOGIC_ADMIN_PASSWORD=admin - - MARKLOGIC_WALLET_PASSWORD=admin - # The NET_RAW capability allows a process to create raw sockets. Polaris does not like that. - # This setting removes the NET_RAW capability from the container. - cap_drop: - - NET_RAW - volumes: - - ${MARKLOGIC_LOGS_VOLUME}:/var/opt/MarkLogic/Logs - ports: - - "8000-8002:8000-8002" - - "8010-8015:8010-8015" # Range of ports used by app servers, at least one of which - 8015 - is created by a test. - -volumes: - marklogicLogs: diff --git a/docker-compose.yaml b/docker-compose.yaml index 9d1dab27e..0063313b0 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -4,9 +4,9 @@ services: marklogic: image: "${MARKLOGIC_IMAGE}" - platform: linux/amd64 + platform: "${PLATFORM:linux/amd64}" environment: - - INSTALL_CONVERTERS=true + - INSTALL_CONVERTERS=${SET_CONVERTERS:true} - MARKLOGIC_INIT=true - MARKLOGIC_ADMIN_USERNAME=admin - MARKLOGIC_ADMIN_PASSWORD=admin diff --git a/gradle.properties b/gradle.properties index b3e0bff57..dc8a5f9c0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,7 +22,5 @@ cloudBasePath= # See https://docs.gradle.org/current/userguide/toolchains.html#sec:custom_loc for information # on custom toolchain locations in Gradle. Adding these to try to make Jenkins happy. -#commented out to try to fix api tests on arm instances org.gradle.java.installations.fromEnv=JAVA_HOME_DIR org.gradle.java.installations.paths=/home/builder/java/jdk-17.0.2,/home/builder/java/jdk-21.0.1 -# org.gradle.java.installations.paths=/usr/lib/jvm/java-17-amazon-corretto.aarch64 From 0e967a4c5a259dffe7d33ce5a5b87b4b31aae024 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 28 Jan 2026 14:24:24 +0530 Subject: [PATCH 20/27] updated docker-compose file --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 0063313b0..76ce0c2be 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -4,7 +4,7 @@ services: marklogic: image: "${MARKLOGIC_IMAGE}" - platform: "${PLATFORM:linux/amd64}" + platform: "${PLATFORM:'linux/amd64'}" environment: - INSTALL_CONVERTERS=${SET_CONVERTERS:true} - MARKLOGIC_INIT=true From f3e760794aa2854eb51aed36661c4e0cc808fb3e Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 28 Jan 2026 14:45:38 +0530 Subject: [PATCH 21/27] fixed issue with docker compose file --- docker-compose.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 76ce0c2be..2ba315235 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -4,9 +4,9 @@ services: marklogic: image: "${MARKLOGIC_IMAGE}" - platform: "${PLATFORM:'linux/amd64'}" + platform: "${PLATFORM:-linux/amd64}" environment: - - INSTALL_CONVERTERS=${SET_CONVERTERS:true} + - INSTALL_CONVERTERS=${SET_CONVERTERS:-true} - MARKLOGIC_INIT=true - MARKLOGIC_ADMIN_USERNAME=admin - MARKLOGIC_ADMIN_PASSWORD=admin From bdda995006e684821bb43b24a4d7ee4e0e059a5e Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 28 Jan 2026 16:37:02 +0530 Subject: [PATCH 22/27] waiting for ML Manage API to be up --- Jenkinsfile | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e91a21dcc..36c919619 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -40,20 +40,32 @@ def setupDockerMarkLogic(String image) { MARKLOGIC_IMAGE=''' + image + ''' MARKLOGIC_LOGS_VOLUME=marklogicLogs \ docker compose up -d --build - echo "Waiting for MarkLogic to be ready..." + echo "Waiting for MarkLogic Admin API (8001)..." + count=0 timeout=180 + until curl -u admin:admin --output /dev/null --silent --fail http://localhost:8001/admin/v1/timestamp; do + ((count++)) + if [ $count -ge $timeout ]; then + echo "MarkLogic Admin API (8001) did not start in time!" + docker compose logs marklogic + exit 1 + fi + sleep 5 + done + + echo "Waiting for MarkLogic Manage API (8002)..." count=0 - until curl -u admin:admin --output /dev/null --silent --fail http://localhost:8001; do - - ((count++)) - if [ $count -ge $timeout ]; then - echo "MarkLogic did not start in time!" - docker compose logs - exit 1 - fi - sleep 5 - done - echo "MarkLogic is ready." + until curl -u admin:admin --output /dev/null --silent --fail http://localhost:8002/manage/v2; do + ((count++)) + if [ $count -ge $timeout ]; then + echo "MarkLogic Manage API (8002) did not start in time!" + docker compose logs marklogic + exit 1 + fi + sleep 5 + done + + echo "MarkLogic is fully ready." echo "Debugging Java installation on ARM instance:" ls -la /usr/lib/jvm/ From 7b14c06047c266e7053ebb42811a7cd988549ecc Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 28 Jan 2026 16:41:14 +0530 Subject: [PATCH 23/27] archieving html reports from ec2 instance --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 36c919619..fccb0bdbf 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -462,6 +462,7 @@ pipeline { } post { always { + archiveArtifacts artifacts: 'java-client-api/**/build/reports/**/*.html' junit '**/build/**/TEST*.xml' updateWorkspacePermissions() tearDownDocker() From bdd16bef273cd41a75431e438cfb145e04d0b8e7 Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 28 Jan 2026 17:36:50 +0530 Subject: [PATCH 24/27] increated timeout to see ML Manage API(8002) --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index fccb0bdbf..53d1b3c72 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -42,7 +42,7 @@ def setupDockerMarkLogic(String image) { docker compose up -d --build echo "Waiting for MarkLogic Admin API (8001)..." count=0 - timeout=180 + timeout=300 until curl -u admin:admin --output /dev/null --silent --fail http://localhost:8001/admin/v1/timestamp; do ((count++)) if [ $count -ge $timeout ]; then From 7390d9054b9fc855f42c246542219646730b0a5f Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Wed, 28 Jan 2026 21:49:28 +0530 Subject: [PATCH 25/27] removed checks with ML server ports --- Jenkinsfile | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 53d1b3c72..3867b7f21 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -40,33 +40,7 @@ def setupDockerMarkLogic(String image) { MARKLOGIC_IMAGE=''' + image + ''' MARKLOGIC_LOGS_VOLUME=marklogicLogs \ docker compose up -d --build - echo "Waiting for MarkLogic Admin API (8001)..." - count=0 - timeout=300 - until curl -u admin:admin --output /dev/null --silent --fail http://localhost:8001/admin/v1/timestamp; do - ((count++)) - if [ $count -ge $timeout ]; then - echo "MarkLogic Admin API (8001) did not start in time!" - docker compose logs marklogic - exit 1 - fi - sleep 5 - done - - echo "Waiting for MarkLogic Manage API (8002)..." - count=0 - until curl -u admin:admin --output /dev/null --silent --fail http://localhost:8002/manage/v2; do - ((count++)) - if [ $count -ge $timeout ]; then - echo "MarkLogic Manage API (8002) did not start in time!" - docker compose logs marklogic - exit 1 - fi - sleep 5 - done - - echo "MarkLogic is fully ready." - + sleep 300 echo "Debugging Java installation on ARM instance:" ls -la /usr/lib/jvm/ readlink -f /usr/bin/java From da708af7931c5db48e2f9c02f5d4f60bbef78afa Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Thu, 29 Jan 2026 12:24:55 +0530 Subject: [PATCH 26/27] provisioning the infra in single stage and optimized the pipeline flow --- Jenkinsfile | 85 +++++++++++++++++++++-------------------------------- 1 file changed, 34 insertions(+), 51 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3867b7f21..e5206d593 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -31,25 +31,16 @@ def setupDockerMarkLogic(String image) { cd java-client-api export PLATFORM=$PLATFORM export SET_CONVERTERS=$SET_CONVERTERS - # Use the ARM-specific compose file docker compose down -v || true docker volume prune -f - echo "Using image: ''' + image + '''" + echo "Using image: "''' + image + ''' docker pull ''' + image + ''' MARKLOGIC_IMAGE=''' + image + ''' MARKLOGIC_LOGS_VOLUME=marklogicLogs \ docker compose up -d --build + echo "Waiting for MarkLogic server to initialize." sleep 300 - echo "Debugging Java installation on ARM instance:" - ls -la /usr/lib/jvm/ - readlink -f /usr/bin/java - echo "Current JAVA_HOME_DIR value: $JAVA_HOME_DIR" - ls -la $JAVA_HOME_DIR || echo "JAVA_HOME_DIR path does not exist" - echo "Verifying Docker Compose installation:" - docker compose version || echo "Docker Compose not available" - docker --version - export JAVA_HOME=$JAVA_HOME_DIR export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH @@ -218,11 +209,9 @@ pipeline { stages { stage('pull-request-tests') { - when { - expression { false } - not { - expression { return params.regressions } + expression { + return !params.regressions && !params.arm_regressions } } steps { @@ -257,21 +246,23 @@ pipeline { } stage('publish') { when { - expression { false } branch 'develop' not { - expression { return params.regressions } + anyOf { + expression { return params.regressions } + expression { return params.arm_regressions } + } } } steps { sh label: 'publish', script: '''#!/bin/bash - export JAVA_HOME=$JAVA_HOME_DIR - export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR - export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH - cp ~/.gradle/gradle.properties $GRADLE_USER_HOME; - cd java-client-api - ./gradlew publish - ''' + export JAVA_HOME=$JAVA_HOME_DIR + export GRADLE_USER_HOME=$WORKSPACE/$GRADLE_DIR + export PATH=$GRADLE_USER_HOME:$JAVA_HOME/bin:$PATH + cp ~/.gradle/gradle.properties $GRADLE_USER_HOME; + cd java-client-api + ./gradlew publish + ''' } } @@ -279,8 +270,8 @@ pipeline { when { allOf { branch 'develop' - expression { return params.regressions } - expression { false } + expression { return params.regressions } + expression { return !params.arm_regressions } } } steps { @@ -319,8 +310,8 @@ pipeline { when { allOf { branch 'develop' - expression { return params.regressions } - expression { false } + expression { return params.regressions } + expression { return !params.arm_regressions } } } steps { @@ -338,14 +329,21 @@ pipeline { stage('provisionInfrastructure'){ when { allOf { + //branch 'develop' branch 'arm-regressions-testbranch' expression { return params.arm_regressions } + expression { return !params.regressions } } } agent {label 'javaClientLinuxPool'} steps{ script { + def nodeName = "java-client-agent-${BUILD_NUMBER}" + def remoteFS = "/space/jenkins_home" + def labels = "java-client-agent-${BUILD_NUMBER}" + def instanceIp = env.EC2_PRIVATE_IP + def deploymentResult = deployAWSInstance([ instanceName: "java-client-instance-${BUILD_NUMBER}", region: 'us-west-2', @@ -365,25 +363,8 @@ pipeline { env.DEPLOYMENT_REGION = deploymentResult.region env.DEPLOYMENT_TERRAFORM_DIR = deploymentResult.terraformDir env.EC2_PRIVATE_IP = deploymentResult.privateIp - } - } - } - stage('setupJenkinsAgent'){ - when { - allOf { - branch 'arm-regressions-testbranch' - expression { return params.arm_regressions } - } - } - agent {label 'javaClientLinuxPool'} - steps{ - script { - def nodeName = "java-client-agent-${BUILD_NUMBER}" - def remoteFS = "/space/jenkins_home" - def labels = "java-client-agent-${BUILD_NUMBER}" - def instanceIp = env.EC2_PRIVATE_IP - - // Use shared library for volume attachment + + // Use shared library for volume attachment def volumeResult = attachInstanceVolumes([ instanceIp: instanceIp, remoteFS: remoteFS, @@ -399,8 +380,8 @@ pipeline { echo "✅ Volume attachment completed: ${volumeResult.volumeAttached}" echo "✅ Java installed: ${volumeResult.javaInstalled}" echo "✅ Dependencies installed: ${volumeResult.dependenciesInstalled}" - - // Use shared library to create Jenkins agent + + // Use shared library to create Jenkins agent def agentResult = createJenkinsAgent([ nodeName: nodeName, instanceIp: instanceIp, @@ -420,8 +401,10 @@ pipeline { agent { label "java-client-agent-${BUILD_NUMBER}" } when { allOf { + //branch 'develop' branch 'arm-regressions-testbranch' expression { return params.arm_regressions } + expression { return !params.regressions } } } steps { @@ -452,12 +435,12 @@ pipeline { echo "🧹 Starting cleanup process..." try { - // Cleanup Terraform infrastructure first + // Cleanup Terraform infrastructure if (env.EC2_PRIVATE_IP) { echo "🗑️ Cleaning up Terraform resources..." node('javaClientLinuxPool') { try { - sleep 300 + sleep 60 unstash "terraform-${BUILD_NUMBER}" withAWS(credentials: 'headlessDbUserEC2', region: 'us-west-2', role: 'role-headless-testing', roleAccount: '343869654284', duration: 3600) { sh '''#!/bin/bash From d1e4545aa7a594d660157a43935792c7c52a28cb Mon Sep 17 00:00:00 2001 From: nagalakshmi Date: Thu, 29 Jan 2026 19:24:30 +0530 Subject: [PATCH 27/27] updated jenkinsfile --- Jenkinsfile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e5206d593..3c7b47ec7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,4 +1,4 @@ -@Library('shared-libraries@arminstances_aws_sharedlibraries') _ +@Library('shared-libraries') _ def getJavaHomePath() { if (params.arm_regressions) { @@ -189,10 +189,10 @@ pipeline { parameters { booleanParam(name: 'regressions', defaultValue: false, description: 'indicator if build is for regressions') - booleanParam(name: 'arm_regressions', defaultValue: true, description: 'indicator if build is for ARM regressions') + booleanParam(name: 'arm_regressions', defaultValue: false, description: 'indicator if build is for ARM regressions') string(name: 'JAVA_VERSION', defaultValue: 'JAVA17', description: 'Either JAVA17 or JAVA21') string(name: 'packagefile', defaultValue: 'Packagedependencies', description: 'package dependency file') - string(name: 'terraformBranch', defaultValue: 'create-packagedependencies-javaclientapi', description: 'Branch of terraform-templates repo to use') + string(name: 'terraformBranch', defaultValue: 'master', description: 'Branch of terraform-templates repo to use') } @@ -329,8 +329,7 @@ pipeline { stage('provisionInfrastructure'){ when { allOf { - //branch 'develop' - branch 'arm-regressions-testbranch' + branch 'develop' expression { return params.arm_regressions } expression { return !params.regressions } } @@ -339,10 +338,7 @@ pipeline { steps{ script { - def nodeName = "java-client-agent-${BUILD_NUMBER}" - def remoteFS = "/space/jenkins_home" - def labels = "java-client-agent-${BUILD_NUMBER}" - def instanceIp = env.EC2_PRIVATE_IP + def deploymentResult = deployAWSInstance([ instanceName: "java-client-instance-${BUILD_NUMBER}", @@ -364,6 +360,11 @@ pipeline { env.DEPLOYMENT_TERRAFORM_DIR = deploymentResult.terraformDir env.EC2_PRIVATE_IP = deploymentResult.privateIp + def nodeName = "java-client-agent-${BUILD_NUMBER}" + def remoteFS = "/space/jenkins_home" + def labels = "java-client-agent-${BUILD_NUMBER}" + def instanceIp = env.EC2_PRIVATE_IP + // Use shared library for volume attachment def volumeResult = attachInstanceVolumes([ instanceIp: instanceIp, @@ -401,8 +402,7 @@ pipeline { agent { label "java-client-agent-${BUILD_NUMBER}" } when { allOf { - //branch 'develop' - branch 'arm-regressions-testbranch' + branch 'develop' expression { return params.arm_regressions } expression { return !params.regressions } }