jenkins快速批量执行多任务
需求
当我们为每个微服务配置了不同的job时,如果需要批量对所有job进行指定分支的更新,低效率的方法是逐个点进job,手动触发构建。当job数量大了以后,操作起来就比较费劲了。
此时可以通过总分结构,设置一个父job,一次构建完成所有微服务的批量构建。
实现
-
新建一个item,选择multijob project
-
一个multijob项目在逻辑上可以包含多个phase,每个phase又可以引用多个已有的job。phase之间是串行的,phase内的多个job之间可以选择串行/并行。
-
新建phase和job,用folder/projectName的形式引用其他job。
-
配置可同时运行的任务数量:系统设置-Maven项目配置-执行者数量,配置一个合适的数量
-
如果采用了kubernetes动态slave pod的方式,需求修改集群层面的slave pod的并发量限制:系统设置-cloud-选定kubernetes集群-容器数量。同时需要设置单个pod模板对应的slave pod并发量限制:系统设置-cloud-选定kubernetes集群-选定podTemplate-Concurrency Limit
传参
该方案的一个关键问题是,如果multijob的子job有参数需要通过父job传入,如何配置父job?
- 在multijob中勾选参数化构建,增加欲传入的参数
- 在multijob的phase job中增加predefined parameter,每行一个参数,使用
p1=${parameterName}
的方式,将父job的parameterName参数传给子job的p1参数
参考
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。