如何阻止Jenkins多个流水线并发运行?解决本地服务器资源瓶颈
Jenkins多流水线并发触发导致资源不足的解决方法
我在内存有限的本地服务器上运行Jenkins,目前为了测试,把5条流水线都指向了同一个代码仓库。每次发起PR时,这5条流水线会同时触发,直接导致服务器资源被占满,出现节流问题。
已尝试的无效方案
- 在Jenkinsfile中添加配置
options { disableConcurrentBuilds() },但这个配置只能阻止同一流水线任务的并发运行,没法管控不同流水线之间的并发。 - 编辑单个任务的配置来禁用并发,同样只能作用于单个任务,对其他流水线无效。
- 了解到throttle-concurrents插件,但不清楚怎么用,也不确定它能不能管控多条流水线的并发。
有效解决方案:使用throttle-concurrents插件管控跨流水线并发
这个插件专门用来限制同一组任务的并发数,完全能满足管控5条流水线同时触发的需求,具体配置步骤如下:
1. 安装插件
在Jenkins的「插件管理」中搜索并安装Throttle Concurrent Builds插件。
2. 配置全局节流规则
进入Jenkins的「系统管理」→「全局节流配置」,添加一个节流组:
- 给节流组起个名字(比如
PR_Build_Group) - 设置该组的最大并发构建数(比如设为2,根据服务器内存情况调整)
3. 在每条流水线中关联节流组
在每个流水线的Jenkinsfile中添加以下配置:
options { throttleJobProperty( categories: ['PR_Build_Group'], // 关联刚才创建的节流组 throttleEnabled: true, throttleOption: 'category' ) }
如果是通过任务页面配置,在流水线任务的「配置」页面找到「Throttle Concurrent Builds」选项,勾选启用后选择创建好的节流组即可。
配置完成后,当PR触发5条流水线时,Jenkins会自动控制同一节流组内的任务最多只运行你设置的并发数,避免服务器资源被瞬间占满。
可选优化:调整PR触发规则
如果5条流水线都是针对同一仓库的PR触发,可以考虑修改触发条件:比如让PR只触发特定流水线,或者通过Jenkins对应代码托管平台的插件(如GitHub Organization插件)统一管理触发规则,减少不必要的流水线同时启动。
内容的提问来源于stack exchange,提问作者Turgut
相关产品推荐
相关产品推荐

