Задание A запускает 2 параллельных параметризованных задания B.
Задание A:
stage('Build and Deploy') {
branch = "${BRANCH}"
def builds = [:]
builds["A"] = {
build job: 'job-A',parameters: [
string(name: 'module', value: "A"),
string(name: 'BRANCH', value: ${BRANCH}),
string(name: 'AUTO_DEPLOY', value: 'true') ], quietPeriod: 2
}
builds["B"] = {
build job: 'job-B', parameters: [
string(name: 'module', value: "A"),
string(name: 'BRANCH', value: ${BRANCH}),
string(name: 'AUTO_DEPLOY', value: 'true')], quietPeriod: 2
}
parallel builds
build job: "deploy-job-A", parameters: [string(name: 'AUTO_DEPLOY', value: "true")], wait: false
build job: "deploy-job-B", parameters: [string(name: 'AUTO_DEPLOY', value: "true")], wait: false
}
У него есть параметр выбора BRANCH
с именами ветвей, которыенеобходимо передать в задание B. Другой параметр выбора - AUTO_DEPLOY
, который передается заданию B, и задание B должно передать его по цепочке, поскольку оно необходимо для задания C.
Задание B
node {
stage("Build job-${module} image") {
branch = "${env.BRANCH}"
checkout scm
buildVersion= readFile('job.version').trim() + ".${BUILD_NUMBER}"
// stuff
build job: "deploy-${JOB_NAME}", parameters: [
string(name: 'buildVersion', value: buildVersion),
string(name: 'AUTO_DEPLOY', value: ${env.AUTO_DEPLOY})], wait: false
}
}
Задание C:
script {
def deployVersion = "${image}".substring("${image}".lastIndexOf(':') + 1)
currentBuild.description = "${deployVersion}"
}
stage('Checkout') {
node {
checkout scm
}
}
stage('Deploy prelive') {
try {
milestone 1
if (${env.AUTO_DEPLOY} != 'true') {
input message: "Deploy ${image} to prelive?"
}
milestone 2
// stuff
}
ОБНОВЛЕНИЕ:
задание A выбрасывает
java.lang.NoSuchMethodError: No such DSL method '$' found among steps
скорее всего, он не может разрешить параметр string(name: 'BRANCH', value: ${BRANCH})