Jenkins で逐次実行している処理に時間がかかっているとき、並列化するだけで手軽に高速化できる場合があります。 pipeline { agent any stages { stage("parallel") { parallel { stage('job1') { when {[]() expression { return job1.toBoolean() } } steps { build job: 'test-job1', parameters: [ [$class: 'StringParameterValue', name: "date", value: "$date"] ] } } stage('job2') { when { expression { return job2.toBoolean() } } steps { build job: 'test-job2', parameters: [ [$class: 'StringParameterValue', name: "date", value: "$date"] ] } } stage('job3') { when { expression { return job3.toBoolean() } } steps { build job: 'test-job3', parameters: [ [$class: 'StringParameterValue', name: "date", value: "$date"] ] } } } } } } pipeline { parameters { string(name: "NAMES", description: "comma separated list") } stages { stage("run") { steps { script { def nameList = params.NAMES.split(",") // { ブランチ名: {処理}} というmapを作る def branches = nameList.collectEntries{ it -> [it, { stage("run-${it}") { // stepを実行する withEnv([ "NAME=${it}", ]) { sh ''' echo "Hello ${NAME}" ''' } // 子ジョブを実行する build(job: "child", parameters: [string(name: 'NAME', value: it)]) } } ] } println branches // => [ // "foo": { stage("run-foo") { ... } }, // "bar": { stage("run-bar") { ... } }, // ] parallel branches // 同時実行数を制限したい場合は以下のようにする // def MAX_CONCURRENT = 4 // (branches.keySet() as List).collate(MAX_CONCURRENT).each{ // parallel branches.subMap(it) // } } } } } }