如何配置Jenkins实现三类作业的特定主机调度规则?能否用Throttle插件?
用Throttle Concurrent Build插件就能搞定你的作业调度需求!
先给你个肯定答案:完全可以用Throttle Concurrent Build插件实现你的三类作业调度规则,搭配一点Jenkins原生配置或者辅助插件就能完美适配。下面我给你拆解每类作业的具体配置步骤:
先做准备:给作业打标签
先给三类作业分别打上专属标签,方便后续分组限流:
- 1类作业统一打标签
job-type-1 - 2类作业统一打标签
job-type-2 - 3类作业统一打标签
job-type-3
1类作业配置(任意数量并发、可与2类共存、禁3类节点)
进入1类作业的配置页面,找到「Throttle Concurrent Builds」选项并启用:
- 选择「Throttle builds matching the specified label」,输入标签
job-type-1 - 设置「Maximum concurrent builds per node」为
0(代表无限制,如果你想限制最多3个就填3) - 打开「Mutual Exclusion」模块,勾选「Exclude builds with these labels」,输入
job-type-3——这样只要节点上有3类作业在跑,1类作业就不会调度到这个节点上
2类作业配置(单节点仅1个、可与1类共存、禁3类节点)
同样进入2类作业的配置页面,启用Throttle插件:
- 选择「Throttle builds matching the specified label」,输入标签
job-type-2 - 设置「Maximum concurrent builds per node」为
1——确保单台主机上最多跑1个2类作业 - 同样在「Mutual Exclusion」里勾选「Exclude builds with these labels」,输入
job-type-3——和1类作业一样,避开有3类作业的节点
3类作业配置(单节点仅1个、完全独占节点)
3类作业是核心的独占需求,配置如下:
- 启用Throttle插件后,选择「Throttle builds matching the specified label」,输入标签
job-type-3 - 设置「Maximum concurrent builds per node」为
1——保证单节点只有1个3类作业 - 在「Mutual Exclusion」里勾选「Exclude builds with these labels」,输入
job-type-1,job-type-2——这样3类作业运行时,节点上绝对不会有1类或2类作业,反过来1、2类也没法在有3类的节点启动
备选方案:如果需要更严格的节点独占
要是你觉得Throttle的互斥标签不够稳妥,还可以搭配Lockable Resources插件:给每台主机创建一个专属的「独占资源」(比如命名为 node-<主机名>-exclusive),3类作业运行时自动锁定这个资源,而1类、2类作业只有在该资源未被锁定时才能调度到对应节点。这种方式更直观,适合对节点独占要求极高的场景。
总的来说,你的需求用Throttle Concurrent Build插件就能覆盖,配合标签和互斥规则完全能实现你要的调度逻辑。
内容的提问来源于stack exchange,提问作者Volodymyr Bezuglyy
相关产品推荐
相关产品推荐

