blob: 21067dfd72d38debfd7f294100ba91e0ad8dbdd2 [file] [log] [blame]
DRY_RUN = false
def doParallelBuilds() {
def buildjobs = []
def types = env.TYPES.split(' ')
def compilers = env.COMPILERS.split(' ')
for (type in types) {
for (compiler in compilers) {
buildjobs.add([env.DISTRO, compiler, type].join(','))
}
}
String jjob = env.JOB_DIR + '/os_build'
def builders = [:]
currentBuild.result = 'SUCCESS'
for (buildjob in buildjobs) {
def params = buildjob.split(',')
def distro = params[0]
def compiler = params[1]
def type = params[2]
String jobName = distro + ' ' + compiler + ' ' + type
builders[jobName] = {
stage(jobName) {
script {
String name = jobName + ' ' + env.GITHUB_BRANCH
echo "Build: " + name
if (DRY_RUN) { jjob = "Branch_Builds/dummy" }
def buildres = build(job: jjob, propagate: false,
parameters: [
string(name: 'FEATURES', value: env.FEATURES),
string(name: 'GITHUB_URL', value: env.GITHUB_URL),
string(name: 'GITHUB_BRANCH', value: env.GITHUB_BRANCH),
string(name: 'DISTRO', value: distro),
string(name: 'COMPILER', value: compiler),
string(name: 'TYPE', value: type)
])
if ('SUCCESS' != buildres.getResult()) {
error("${jobName} build failed")
currentBuild.result = 'FAILURE'
}
}
}
}
}
parallel builders
}
String shaForBranch(url, branch) {
sha1 = sh (
script: "set -- `git ls-remote -h $url refs/heads/$branch`; echo \${1}",
returnStdout: true
).trim()
return sha1
}
pipeline {
agent none
stages {
stage('Initialization') {
agent { label 'master' }
steps {
script {
if (! env.JOB_DIR) {
def bparts = env.JOB_NAME.split('/')
bparts.pop()
env.JOB_DIR = bparts.join('/')
}
if (! env.DISTRO) {
def dparts = env.JOB_BASE_NAME.split("_|-")
if (3 != dparts.length) {
error("Invalid job base name " + env.JOB_BASE_NAME)
}
env.DISTRO = [ dparts[1], dparts[2] ].join(':')
}
if (! env.GITHUB_BRANCH) {
def bparts = env.JOB_NAME.split('/')
if (2 != bparts.length) {
error("Invalid branch name from " + env.JOB_NAME)
}
env.GITHUB_BRANCH = bparts[0]
}
currentBuild.displayName = env.GITHUB_BRANCH + " " + env.DISTRO + " " + env.FEATURES
if (! env.SHA1) {
env.SHA1 = shaForBranch(env.GITHUB_URL, env.GITHUB_BRANCH)
}
sh 'printenv'
}
}
}
stage('Builds') {
steps {
script {
doParallelBuilds()
}
}
}
}
}