1、如何提升Jenkins的Job并行构建数
默认情况下,Jenkins只配置了2个Executor,即只允许最多2个Job同时构建,这个值可以修改:
在Manage Jenkins
=>Configure System
里,找到 # of executors
,修改这个值就好,注意不要太大,不然机器卡了。
一般建议按CPU核数来配置。
2、同一个Job如何并行执行?
默认情况下,同一个Job启动了多个构建时,在前一个构建未结束前,第二个构建不会启动,会提示jenkins pending is already in progress
,第一个结束后,才会启动第二个构建。
这也是比较安全的作法,避免Job的一些数据冲突。
如果你确实希望一个Job的多个构建能同时启动,在Job的配置页面,有一个选项:Execute concurrent builds if necessary
,勾选它即可。
3、多个Job如何互斥,防止并行?
只要有足够的Jenkins Executor,不同的Job就可以并行启动构建。
有时我们希望不同的Job间要互斥,某一个Job在构建中时,禁止另一个Job启动。
这个需要依赖一个插件:lockable resources
,安装完插件,要先配置资源(其实就是字符串)
-
进入
Manage Jenkins
=>Configure System
,找到Lockable Resources Manager
,点击Add Lockable Resource
:Resource Name
: 必填,用于加锁的字符串,不能有空格,比如I_am_a_lock
,建议由字母数字下划线组成Description
: 可选,说明文字,无作用Labels
: 可选,用于加锁的字符串子集,允许多个字符串,用空格区分,比如aaa bbb ccc
Reserved by
:可选,不为空表示该资源处于维护中,此时所有依赖此资源的Job,都会处于挂起状态:(pending—Waiting for resources with xxx)
注:这么配置完后,我们就有了4个资源,可以用于加锁:I_am_a_lock
aaa
bbb
ccc
-
配置好资源后,进入需要互斥的每个Job的配置页,勾选
This build requires lockable resources
,在下面的- 只在
Resources
里输入上面配置的I_am_a_lock
- 只在
Label
里输入上面配置的bbb
- 注意:
Resources
和Label
,只能输入一个,另一个必须为空 - 注意:需要互斥的每个Job都要配置一遍,且配置要相同
- 只在
-
OK,启动第一个Job,再启动第二个Job:
- 如果此时第一个未完成,第二个会提示等待
(pending—Waiting for resources with label bbb)
- 第一个Job的
Console Output
里会有如下字样,启动时加锁,结束时释放锁:
- 如果此时第一个未完成,第二个会提示等待
22:24:14 [lockable-resources] acquired lock on [I_am_a_lock]
....
22:24:29 [lockable-resources] released lock on [I_am_a_lock]