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
39 changes: 28 additions & 11 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import groovy.transform.Field;
@Field boolean X86_64_LINUX
@Field boolean PPC64LE_LINUX
@Field boolean S390X_LINUX
@Field boolean S390X_ZOS
@Field boolean X86_64_WINDOWS
@Field boolean AARCH64_MAC
@Field boolean X86_64_MAC
Expand All @@ -37,14 +38,18 @@ import groovy.transform.Field;
* Clone the branch from the repo specified to
* get the appropriate OpenJCEPlus code to build.
*/
def cloneOpenJCEPlus() {
def cloneOpenJCEPlus(def software) {
dir("openjceplus/OpenJCEPlus") {
if ((OPENJCEPLUS_REPO == "") && (OPENJCEPLUS_BRANCH == "")) {
echo "Clone using default branch and repository."
checkout scm
} else {
echo "Clone using ${OPENJCEPLUS_BRANCH} from ${OPENJCEPLUS_REPO}"
git branch: "${OPENJCEPLUS_BRANCH}", url: "${OPENJCEPLUS_REPO}"
// if ((OPENJCEPLUS_REPO == "") && (OPENJCEPLUS_BRANCH == "")) {
// echo "Clone using default branch and repository."
// checkout scm
// } else {
// echo "Clone using ${OPENJCEPLUS_BRANCH} from ${OPENJCEPLUS_REPO}"
// git branch: "${OPENJCEPLUS_BRANCH}", url: "${OPENJCEPLUS_REPO}"
// }
if (software == "zos") {
deleteDir()
sh "git clone -b ${CHANGE_BRANCH} git@github.com:gin-nader/OpenJCEPlus.git ."
}
}
}
Expand Down Expand Up @@ -74,6 +79,10 @@ def getPlatforms() {
platforms.add("s390x_linux")
}

if (S390X_ZOS == "true") {
platforms.add("s390x_zos")
}

if (X86_64_WINDOWS == "true") {
platforms.add("x86-64_windows")
}
Expand Down Expand Up @@ -129,7 +138,7 @@ def getTestFlag(hardware, software) {
* @return The URL to the uploaded file
*/
def archive(platform, iteration) {

// Create compressed file containing build.
def ending = ".tar.gz"
def filename = "openjceplus-$iteration-$platform$ending"
Expand Down Expand Up @@ -210,6 +219,8 @@ def run(platform) {
if (software == "aix") {
// Java 25+ requires C++17.1 runtime. Otherwise crashes occur.
nodeTags = "hw.arch.${node_hardware}&&sw.os.aix.7_2&&sw.tool.c++runtime.17_1&&ci.role.build"
} else if (software == "zos") {
nodeTags = "ci.project.openj9&&ci.role.build&&hw.arch.${node_hardware}&&sw.os.zos.3_2"
} else {

// Machines tagged as ci.role.test are expected to have
Expand All @@ -229,13 +240,16 @@ def run(platform) {
echo "${nodeTags}"

node("$nodeTags") {
cloneOpenJCEPlus()
cloneOpenJCEPlus(software)
echo "OpenJCEPlus cloned"
dir("openjceplus/OpenJCEPlus") {
externalLibrary = load("./utils.groovy")
}
try {
externalLibrary.getJava(hardware, software)
withCredentials([usernamePassword(credentialsId: '7c1c2c28-650f-49e0-afd1-ca6b60479546', passwordVariable: 'ARTIFACTORY_PASSWORD', usernameVariable: 'ARTIFACTORY_USERNAME')]) {
externalLibrary.getJava(hardware, software)
}

echo "Java fetched"
externalLibrary.getBinaries(hardware, software)
echo "Binaries fetched"
Expand Down Expand Up @@ -294,6 +308,8 @@ pipeline {
Build for ppc64le_linux platform')
booleanParam(name: 's390x_linux', defaultValue: false, description: '\
Build for s390x_linux platform')
booleanParam(name: 's390x_zos', defaultValue: false, description: '\
Build for s390x_zos platform')
booleanParam(name: 'x86_64_windows', defaultValue: false, description: '\
Build for x86-64_windows platform')
booleanParam(name: 'aarch64_mac', defaultValue: false, description: '\
Expand Down Expand Up @@ -407,6 +423,7 @@ pipeline {
X86_64_LINUX = "${params.x86_64_linux}"
PPC64LE_LINUX="${params.ppc64le_linux}"
S390X_LINUX="${params.s390x_linux}"
S390X_ZOS="${params.s390x_zos}"
X86_64_WINDOWS="${params.x86_64_windows}"
AARCH64_MAC="${params.aarch64_mac}"
X86_64_MAC="${params.x86_64_mac}"
Expand All @@ -431,7 +448,7 @@ pipeline {
// Figure out the platforms to build on.
def platforms = getPlatforms()
assert !((platforms.size() > 1) && (OCK_FULL_URL != "")) : "Cannot specify full OCK URL and multiple platforms."

// Check whether the build has to be run multiple times in parallel.
def iter = (PARALLEL_ITERATIONS ?: "1").toInteger()
echo "Parallel iterations to be run: ${iter}"
Expand Down
59 changes: 43 additions & 16 deletions utils.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ def getOCKTarget(hardware, software) {
if (hardware == "x86-64") {
target = "win64_x86"
}
} else if (software == "zos") {
target = "zos64a"
}

return target
Expand All @@ -67,7 +69,7 @@ def getBinaries(hardware, software) {
def target = getOCKTarget(hardware, software)
def gskit_bin = "https://na.artifactory.swg-devops.com/artifactory/sec-gskit-javasec-generic-local/gskit8/$OCK_RELEASE/$target/jgsk_crypto.tar"
def gskit_sdk_bin = "https://na.artifactory.swg-devops.com/artifactory/sec-gskit-javasec-generic-local/gskit8/$OCK_RELEASE/$target/jgsk_crypto_sdk.tar"

// If user has specified OCK_FULL_URL, override default location.
def ockUrl = OCK_FULL_URL
if (ockUrl != "") {
Expand All @@ -76,8 +78,8 @@ def getBinaries(hardware, software) {
}
dir("openjceplus/OCK") {
withCredentials([usernamePassword(credentialsId: '7c1c2c28-650f-49e0-afd1-ca6b60479546', passwordVariable: 'GSKIT_PASSWORD', usernameVariable: 'GSKIT_USERNAME')]) {
sh "curl -u $GSKIT_USERNAME:$GSKIT_PASSWORD $gskit_bin > jgsk_crypto.tar"
sh "curl -u $GSKIT_USERNAME:$GSKIT_PASSWORD $gskit_sdk_bin > jgsk_crypto_sdk.tar"
sh "curl -k -u $GSKIT_USERNAME:$GSKIT_PASSWORD $gskit_bin > jgsk_crypto.tar"
sh "curl -k -u $GSKIT_USERNAME:$GSKIT_PASSWORD $gskit_sdk_bin > jgsk_crypto_sdk.tar"
}
untar file: 'jgsk_crypto.tar'
untar file: 'jgsk_crypto_sdk.tar'
Expand Down Expand Up @@ -114,30 +116,55 @@ def getJava(hardware, software) {

def java_link = ""
if (JAVA_RELEASE == "") {
java_link = "https://api.adoptopenjdk.net/v3/binary/latest/${JAVA_VERSION}/ga/${software}/${hardware}/jdk/openj9/normal/ibm?project=jdk"
if (software == "zos") {
java_link = "https://na.artifactory.swg-devops.com/artifactory/sys-rt-generic-local/hyc-runtimes-jenkins.swg-devops.com/Build_JDK25_s390x_zos_Nightly/278/ibm-semeru-certified-jdk_s390x_zos_25.0.2.0-20260225-080405.pax.Z"
} else {
java_link = "https://api.adoptopenjdk.net/v3/binary/latest/${JAVA_VERSION}/ga/${software}/${hardware}/jdk/openj9/normal/ibm?project=jdk"
}
} else {
def java_release_link = JAVA_RELEASE.replace("+", "%2B")
java_link = "https://api.adoptopenjdk.net/v3/binary/version/${java_release_link}/${software}/${hardware}/jdk/openj9/normal/ibm?project=jdk"
}

dir("java") {
sh "curl -LJkO ${java_link}"
def java_file = sh (
script: 'ls | grep \'tar\\|zip\'',
returnStdout: true
).trim()
def java_file = ""
if (software == "zos") {
sh "curl -LJkO -u $ARTIFACTORY_USERNAME:$ARTIFACTORY_PASSWORD ${java_link}"
java_file = sh (
script: 'ls | grep \'pax\'',
returnStdout: true
).trim()
} else {
sh "curl -LJkO ${java_link}"
java_file = sh (
script: 'ls | grep \'tar\\|zip\'',
returnStdout: true
).trim()
}

echo "java_file: $java_file"

if (software == "windows") {
unzip zipFile: "$java_file"
} else if (software =="zos") {
sh "pax -p x -rf $java_file"
} else {
untar file: "$java_file"
file: "$java_file"
}
sh "rm $java_file"

def java_folder = sh (
script: "ls | grep \'jdk-${JAVA_VERSION}\'",
returnStdout: true
).trim()
def java_folder = ""
if (software == "zos") {
java_folder = sh (
script: "ls | grep \'J${JAVA_VERSION}\'",
returnStdout: true
).trim()
} else {
java_folder = sh (
script: "ls | grep \'jdk-${JAVA_VERSION}\'",
returnStdout: true
).trim()
}
fileOperations([folderRenameOperation(destination: 'jdk', source: "$java_folder")])

// AIX always loads the bundled version of native libraries. We delete them to
Expand Down Expand Up @@ -175,7 +202,7 @@ def runOpenJCEPlus(command, software) {
for (envar in additional_envars.split(",")) {
additional_exports += " export ${envar.trim()};"
}

}

def java_home = "export JAVA_HOME=$WORKSPACE/java/jdk;"
Expand Down Expand Up @@ -246,7 +273,7 @@ def upload_artifactory(uploadSpec) {
return server.getUrl()
}

/*
/*
* Returns a formatted directory name based upon a branch name.
*/
def getSanitizedBranchName() {
Expand Down