如何实现Jenkins JobFoo按节点并发执行且单节点仅运行一个实例
实现Jenkins节点单实例任务调度的解决方案
问题根源
你之前用Node and Label Parameter插件出现12个任务的原因很明确:这个插件的逻辑是让每个触发的任务在所有匹配标签的节点上各跑一遍,4个任务×3个节点自然就生成了12个实例,完全不符合单节点单实例的需求。
正确配置步骤
锁定任务的执行节点范围
打开JobFoo的配置页,在「General」区域勾选「Restrict where this project can be run」,在「Label expression」中填入JobFooRunner。这样任务只会被分配到带有该标签的nodeA、nodeB、nodeC上执行。启用单节点并发限制
安装并启用「Throttle Concurrent Builds」插件(如果还没装的话),然后在JobFoo的配置页找到「Throttle Concurrent Builds」选项:- 选择「Throttle builds matching this label」,填入
JobFooRunner; - 设置「Maximum concurrent builds per node」为1。
这一步直接限制了每个带有JobFooRunner标签的节点,同一时间只能运行一个JobFoo实例。
- 选择「Throttle builds matching this label」,填入
验证调度逻辑
触发4次带不同sleep参数的JobFoo后,前3个任务会自动分配到三个节点并行执行,第4个任务会进入等待队列。一旦某个节点的任务执行完成(比如sleep 1的任务先结束),队列里的第4个任务会立刻调度到该空闲节点启动。
内容的提问来源于stack exchange,提问作者user87005
相关产品推荐
相关产品推荐

