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}"
}
}
因此,我不确定是否需要配置任何内容,设置管道脚本以使那些下游作业一次运行。
有人可以调查一下并给我一些建议吗?谢谢