Skip to content
Merged
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
19 changes: 8 additions & 11 deletions JenkinsJobs/Builds/build.jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,20 @@ pipeline {
stages {
stage('Set up environment') {
steps {
script { // Extend build configuration with data from the configuration file
def matcher = "$JOB_BASE_NAME" =~ '(?<type>[IY])-build-(?<major>\\d).(?<minor>\\d+)'
if (!matcher) {
error("Unsupported job: $JOB_BASE_NAME")
}
assignEnvVariable('BUILD_TYPE', matcher.group('type'))
script {
utilities = load 'JenkinsJobs/shared/utilities.groovy'

def job = utilities.matchPattern('Job name', "${JOB_BASE_NAME}", [ /(?<type>[IY])-build-(?<major>\d).(?<minor>\d+)/ ])
// Load build properties and configuration from the properties and configuration file
assignEnvVariable('BUILD_TYPE', job.type)
def configurations = readJSON(file: "${WORKSPACE}/JenkinsJobs/buildConfigurations.json")
BUILD = configurations["${BUILD_TYPE}"]
assignEnvVariable('BUILD_TYPE_NAME', BUILD.typeName)
assignEnvVariable('GIT_SUBMODULE_BRANCHES', BUILD.branches ? BUILD.branches.collect{ name, branch -> "${name}:${branch}" }.join(',') : '')
assignEnvVariable('TEST_NAME_PREFIX', "ep${matcher.group('major')}${matcher.group('minor')}${BUILD_TYPE}-unit")
assignEnvVariable('TEST_NAME_PREFIX', "ep${job.major}${job.minor}${BUILD_TYPE}-unit")
assignEnvVariable('TEST_CONFIGURATIONS_EXPECTED', BUILD.tests.collect{ c ->
"${TEST_NAME_PREFIX}-${c.os}-${c.arch}-java${c.javaVersion}_${c.os}.${c.ws}.${c.arch}_${c.javaVersion}"
}.join(','))

utilities = load 'JenkinsJobs/shared/utilities.groovy'
}
dir("${CJE_ROOT}") {
sh '''#!/bin/bash -xe
Expand Down Expand Up @@ -642,8 +640,7 @@ def utilities = null

@NonCPS
def assignEnvVariable(String name, String value) {
env[name] = value
println("${name}=${value}")
utilities.assignEnvVariable(name, value)
}

def exportPropertiesAsEnvironmentVariables(String propertiesFile, Collection<String> exportedVariables){
Expand Down
4 changes: 1 addition & 3 deletions JenkinsJobs/Cleanup/cleanupReleaseArtifacts.jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,7 @@ pipeline {
def allReleases = allDrops.findAll{ d -> d.startsWith('R-')}.sort().reverse() // sort in descending order

def releaseVersions = allReleases.collectEntries{ release ->
def version = utilities.matchBuildIdentifier(release,
{ iBuild -> error "I-builds are not supprted: ${release}" },
{ rBuild -> return rBuild })
def version = utilities.matchBuildIdentifier(release, null, {})
return [ (release): [ 'version': version.label,
'major': version.major.toInteger(),
'minor': version.minor.toInteger(),
Expand Down
3 changes: 1 addition & 2 deletions JenkinsJobs/Releng/prepareNextDevCycle.jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -431,8 +431,7 @@ def githubAPI = null

@NonCPS
def assignEnvVariable(String name, Object value) {
env[name] = value?.toString()
println("${name}=${value}")
utilities.assignEnvVariable(name, value)
}

@NonCPS
Expand Down
3 changes: 1 addition & 2 deletions JenkinsJobs/Releng/promoteBuild.jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,5 @@ def githubAPI = null

@NonCPS
def assignEnvVariable(String name, String value) {
env."${name}" = value
println("${name}=${value}")
utilities.assignEnvVariable(name, value)
}
28 changes: 15 additions & 13 deletions JenkinsJobs/Releng/publishPromotedBuild.jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Therefore, both jobs have to share a 'workspace', and the output of the first jo

pipeline {
options {
skipDefaultCheckout()
checkoutToSubdirectory('git-repo')
timestamps()
timeout(time: 45, unit: 'MINUTES')
buildDiscarder(logRotator(numToKeepStr:'10'))
Expand Down Expand Up @@ -35,20 +35,20 @@ pipeline {
stage('Process Input') {
steps {
script {
// Always load the script from the very same state this pipeline is loaded (to ensure consistency)
utilities = load 'git-repo/JenkinsJobs/shared/utilities.groovy'

if (!params.releaseBuildID) {
error "Required parameter 'releaseBuildID' is not defined."
}
assignEnvVariable('RELEASE_BUILD_ID', params.releaseBuildID)
def idMatcher = env.RELEASE_BUILD_ID =~ /(?<type>[SR])-(?<major>\d+)\.(?<minor>\d+)(\.\d+)?(?<checkpoint>(M|RC)\d+[a-z]?)?-(?<date>\d{8})(?<time>\d{4})/
if (!idMatcher.matches()) {
error "releaseID: ${RELEASE_BUILD_ID}, does not match the expected pattern."
}
assignEnvVariable('RELEASE_TYPE', idMatcher.group('type'))
assignEnvVariable('RELEASE_VERSION_MAJOR', idMatcher.group('major'))
assignEnvVariable('RELEASE_VERSION_MINOR', idMatcher.group('minor'))
assignEnvVariable('CHECKPOINT', idMatcher.group('checkpoint') ?: 'GA')
def buildId = "I${idMatcher.group('date')}-${idMatcher.group('time')}"
idMatcher = null // release matcher as it's not serializable
def build = utilities.matchBuildIdentifier("${RELEASE_BUILD_ID}", null, {})

assignEnvVariable('RELEASE_TYPE', build.type)
assignEnvVariable('RELEASE_VERSION_MAJOR', build.major)
assignEnvVariable('RELEASE_VERSION_MINOR', build.minor)
assignEnvVariable('CHECKPOINT', build.checkpoint ?: 'GA')
def buildId = "I${build.date}-${build.time}"

if (env.RELEASE_TYPE == 'R') {
assignEnvVariable('REPOSITORY_PATH', "${RELEASE_VERSION_MAJOR}.${RELEASE_VERSION_MINOR}/${RELEASE_BUILD_ID}")
Expand Down Expand Up @@ -175,8 +175,10 @@ pipeline {
}
}

@groovy.transform.Field
def utilities = null

@NonCPS
def assignEnvVariable(String name, String value) {
env."${name}" = value
println("${name}=${value}")
utilities.assignEnvVariable(name, value)
}
10 changes: 8 additions & 2 deletions JenkinsJobs/shared/utilities.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ def matchBuildIdentifier(String dropID, Closure iBuildHandler, Closure sBuildHan
/(?<type>[I])(?<date>\d{8})-(?<time>\d{4})/,
/(?<type>[SR])-(?<label>(?<major>\d+)\.(?<minor>\d+)(\.(?<service>\d+))?(?<checkpoint>(M|RC)\d+[a-z]?)?)-(?<date>\d{8})(?<time>\d{4})/,
], [
{ iBuild -> Objects.requireNonNull(iBuildHandler, "No handler for I-build id match: ${dropID}").call(iBuild)},
{ sBuild -> Objects.requireNonNull(sBuildHandler, "No handler for S-build id match: ${dropID}").call(sBuild)},
{ iBuild -> Objects.requireNonNull(iBuildHandler, "I-build ID not supported: ${dropID}").call(iBuild)},
{ sBuild -> Objects.requireNonNull(sBuildHandler, "S/R-build ID not supported: ${dropID}").call(sBuild)},
])
}

Expand All @@ -41,6 +41,12 @@ def stableBuildGitTag(CharSequence dropID) {
return stableBuildGitTag(matchBuildIdentifier(dropID, null, { }))
}

@NonCPS
def assignEnvVariable(String name, Object value) {
env[name] = value?.toString()?.trim()
println("${name}=${value}")
}

// --- local file modifications ---

def replaceAllInFile(String filePath, Map<String,String> replacements) {
Expand Down
Loading