Jenkins 2.8管道循环使用不同的参数多次触发相同的作业

时间:2018-02-23 10:32:48

标签: jenkins groovy jenkins-pipeline

我正在Jenkins v.2.8中构建管道工作流程。我想要实现的是构建一个步骤,该步骤将使用不同的参数同时多次触发相同的作业。

示例:我有一个名为“Master”的worfklow,它有一步,这一步是读取我的参数“Number”,这是一个带有多个选择选项的复选框。因此,用户可以触发工作流程并选择数字选项,如“1,2,3”。现在,当执行此步骤时,我想要实现它调用我的作业“Master_Child”并同时触发具有3个不同参数的“Master_Child”。

我试着这样做:

stage('MyStep') {
        steps {
            echo 'Deploying MyStep'
            script {

                env.NUMBER.split(',').each {
                   build job: 'Master_Child', parameters: [string(name: 'NUMBER', value: "$it")]
                }
            }
        }
    }

但有了它,它会读取第一个参数触发带有参数1的Mast_Child并等待直到作业完成,当作业完成时它会触发与参数2相同的作业。

如果我在作业调用中使用 wait:false ,那么管道工作流只会使用不同的参数调用此作业,但如果子作业失败则不会依赖它。

任何想法如何实现? 先感谢您。

2 个答案:

答案 0 :(得分:2)

我以这种方式解决了我的问题。

stage('MyStage') {
        steps {
            echo 'Deploying MyStep'
            script {
                def numbers = [:]
                env.NUMBER.split(',').each {
                    numbers["numbers${it}"] = {
                        build job: 'Master_Child', parameters: [string(name: 'NUMBER', value: "$it")]
                    }
                }                   
                parallel numbers
            }
        }
    }

答案 1 :(得分:1)

将构建作业语法中的wait设置为false wait: false

stage('MyStep') {
    steps {
        echo 'Deploying MyStep'
        script {

            env.NUMBER.split(',').each {
               build job: 'Master_Child', parameters: [string(name: 'NUMBER', value: "$it")], wait: false
            }
        }
    }
}