从上游Jenkins管道作业调用多个下游作业

从上游Jenkins管道作业调用多个下游作业,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有两份基于管道的工作 父作业(具有字符串参数project1和project2) 子作业(具有字符串参数项目和版本) 父作业输出 [Pipeline] { [Pipeline] stage [Pipeline] { (Test) [Pipeline] script [Pipeline] { [Pipeline] echo Starting project2 [Pipeline] build (Building Child_Job) Scheduling project: Child_Job S

我有两份基于管道的工作

父作业(具有字符串参数project1和project2)

子作业(具有字符串参数项目和版本)

父作业输出

[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
Starting project2
[Pipeline] build (Building Child_Job)
Scheduling project: Child_Job
Starting building: Child_Job #18
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
我期望下游作业被调用两次(对于project1和project2),但它只被调用一次(对于project2)


此脚本是否有明显的问题?

似乎为
生成作业
步骤启用了
等待:true
选项。如果将其更改为
wait:false
,它将执行2次。我在这个测试管道上试过:

@NonCPS
def invokeDeploy(map) {
    for (entry in map) {
        echo "Starting ${entry.key}"
        build job: 'pipeline', quietPeriod: 2, wait: false
        echo "Completed ${entry.key}"
    }
}
pipeline {
    agent any

    stages {
        stage('Test') {
            steps {
                script {
                    def sampleMap = [first_job:'First', second_job:'Second']
                    invokeDeploy(sampleMap)
                }    
            }
        }
    }
}

没有
构建作业
步骤,它是否正常工作?只需
for(映射中的条目){echo“Starting${entry.key}}
Yes。即使在调用构建步骤时没有参数,它也可以工作。如果使用参数thank you调用,则构建步骤似乎在一个循环后退出。我已经设置wait=true,以便子作业按顺序执行。然而,wait=false+禁止子作业上的并发构建也起作用
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
Starting project2
[Pipeline] build (Building Child_Job)
Scheduling project: Child_Job
Starting building: Child_Job #18
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
@NonCPS
def invokeDeploy(map) {
    for (entry in map) {
        echo "Starting ${entry.key}"
        build job: 'pipeline', quietPeriod: 2, wait: false
        echo "Completed ${entry.key}"
    }
}
pipeline {
    agent any

    stages {
        stage('Test') {
            steps {
                script {
                    def sampleMap = [first_job:'First', second_job:'Second']
                    invokeDeploy(sampleMap)
                }    
            }
        }
    }
}