写点什么

Jenkins Pipeline: 并发执行

作者:夏兮。
  • 2022 年 1 月 19 日
  • 本文字数:794 字

    阅读完需:约 3 分钟

前言

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 }
复制代码



总结

以上就是两种并发的方式,在实际的使用总可以结合项目的实际情况,维护成本选择合适的方案。

发布于: 刚刚阅读数: 2
用户头像

夏兮。

关注

星辰大海... 2018.03.21 加入

测试开发工程师 热爱技术,热爱生活

评论

发布
暂无评论
Jenkins Pipeline: 并发执行