如何解决在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 举报,一经查实,本站将立刻删除。