繁体   English   中英

从关闭开始并行运行 Jenkins Pipelines 作业

[英]Run Jenkins Pipelines jobs in parallel from closure

我有一个使用 Pipeline 插件的 Jenkins 服务器。 在此,我想并行启动多个构建,并等待构建完成,然后再进入我的管道的下一个阶段。

如果我明确写出构建作业,我能够成功地做到这一点,如下所示:

parallel 'one': {
    build job: 'job1', 
        parameters: [
            [$class: 'StringParameterValue', name: 'CONFIG', value: "foo"]
        ],
        propagate: false,
        wait: true
},  'two': {
    build job: 'job2', 
        parameters: [
            [$class: 'StringParameterValue', name: 'CONFIG', value: "foo"]
        ],
        propagate: false,
        wait: true
},  'three': {
    build job: 'job3', 
        parameters: [
            [$class: 'StringParameterValue', name: 'CONFIG', value: "foo"]
        ],
        propagate: false,
        wait: true
}

但是,实际上,需要构建的作业数量是可变的,因此明确写出这些作业是不可行的。 我试图将构建包装在一个闭包中,如下所示:

def createParallel = { String parallelName ->
    parallelName: {
        build job: 'jobX', 
            parameters: [
                [$class: 'StringParameterValue', name: 'CONFIG', value: "foo"]
            ],
            propagate: false,
            wait: true
    }
}

parallel (
    createParallel('one'), 
    createParallel('two'), 
    createParallel('three')
)

这种方法的问题是构建实际上并不是并行开始的——它们一次构建一个,等待前一个构建完成。 我做错了什么?

您没有指定任何构建参数,因此 Jenkins 按设计合并队列项。

设置等待:false 并且构建永远不会等待另一个构建。但是如果你需要触发另一个阶段,你必须得到结果

简短的回答是,由于存在错误JENKINS-33051JENKINS-25979 ,目前这不能在 Jenkins 中完成。

我在上面所做的基本上是创建了三个平行线,每个平行线都有一个参数。 需要做的是将闭包放在一个列表中,然后将列表作为参数展开,如下所示:

def list = [ createParallel('one'), createParallel('two'),  createParallel('three') ]
parallel (*list)

不幸的是,这在 Jenkins 中目前没有实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM