在Jenkins Pipeline一次触发时并行触发多个构建

问题描述

Context

我有一些基于正则表达式的Jenkins管道,用于选择要运行的匹配作业。每个管道的下游作业数量约为60。

因此,我写下了声明性脚本以选择这些匹配的作业,然后使用Jenkins Build Plugin并行构建它。一般来说,如下所示:

Finish deploy to A -->   Pipeline A (master node)
                            ->> 60 downstream jobs (slave nodes)

Finish deploy to B -->   Pipeline B (master node)
                            ->> 60 downstream jobs (slave nodes)

Finish deploy to C -->   Pipeline C (master node)
                            ->> 60 downstream jobs (slave nodes)

主节点是用于运行Jenkins的服务器。

从节点是用于运行任务的AWS EC2实例,我的池围绕32个服务器,可以一次使用多达180个任务。

Expected

比方说,我依次有那些管道触发的管道A,管道B,管道C,然后我期望下游作业将被依次触发。这意味着将计划从A开始的60个作业,然后在流水线B,流水线C上进行构建,因为从属执行器仍然是免费的并且可以使用。

Observed

即使AWS EC2实例不运行任何任务(全部可用),管道也不会一次触发所有作业,而是触发一部分。这意味着将首先在管道A中构建随机数的作业,然后过一会儿,其余的将被构建。

管道脚本:

Stage('Integration Test Run') {
            steps {
                script {
                    matchingJobs = commonPipelineMethods.getTestJobs(venture_to_test,testAgainst)
                    parallel matchingJobs.collectEntries{downstreamJob-> [downstreamJob.name,commonPipelineMethods.buildSingleJob(this,downstreamJob)]}
                }
            }
        }
def buildSingleJob(steps,downstreamJob) {
    return {
        def result = steps.build job: downstreamJob.fullName,propagate: false
        steps.echo "${downstreamJob.fullName} finished: ${result.rawBuild.result}"
        }
    }

因此,我不确定是否需要配置任何内容,设置管道脚本以使那些下游作业一次运行。

有人可以调查一下并给我一些建议吗?谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)