前言
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{}的方式实现多个的并发。核心代码如下:
//Groovy
def 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
}
复制代码
总结
以上就是两种并发的方式,在实际的使用总可以结合项目的实际情况,维护成本选择合适的方案。
评论