前言
jenkins 的 pipeline 中,会遇到并发使用的场景,通常会使用 parallel 的方法。下面介绍两种常用的方式。
并发多个 jobs
首先介绍的一种方式是并发执行多个 job。可以理解为有一志 master job 负责调度其他的子 job。首先会 A job,然后有几个的子 job(google,salesforce,zendesk).这四个 job 负责调度的 job 是 A。核心代码如下:
// Groovy def parallelMRJobs() { def scheduled = [:] def jobInstance = [] def jobs = ["google","salesforce","zendesk"] for (int i = 0; i < jobs.size(); i++) { def jobName = jobs[i] scheduled[jobName] = { def oneJob jenkins.catchError { oneJob = jenkins.build(job: jobName, parameters: [jenkins.string(name:'test',value:"test")], propagate: false) } jobInstance.add(oneJob) } } jenkins.parallel scheduled return jobInstance }
复制代码
并发多个 stages
这里只有一个 job,在 parallel 的方法上通过 list.each{}的方式实现多个的并发。核心代码如下:
//Groovydef parallelMRJobs() { def buildSet = [:] def jobs = ["google","salesforce","zendesk"] jobs.each { brandStr -> jenkins.echo "brand is ${brandStr}" buildSet[brandStr] = { stage(name: 'Checkout') { jenkins.echo " pass" }
stage(name: 'Install Dependency') { jenkins.echo " pass" }
stage(name: 'Test') { jenkins.echo " pass" if (brandStr == "salesforce") { jenkins.sh "exit 1" } }
stage(name: 'Deploy Service') { jenkins.echo " pass" jenkins.sh "ls" } } } jenkins.parallel buildSet }
复制代码
总结
以上就是两种并发的方式,在实际的使用总可以结合项目的实际情况,维护成本选择合适的方案。
评论