也许有人可以帮助我。即使队列中有更多构建,我也想在 Jenkins 中为某些项目一次运行一个构建。我知道我可以限制执行者的数量,但这会影响所有项目,这个解决方案不适合我。我尝试使用 Throttle Concurrent Builds 插件,因为它在这种情况下是推荐的,但它不起作用,我不知道为什么。
在我安装这个插件之前,所有构建都正确运行。当我安装了它(刚刚安装,我没有对配置进行任何更改)构建进入队列并且永远不会启动(我使用 2 个执行程序,两者都一直处于空闲状态)。我确认我的节点一切正常,它在线,执行器数量等于 2,并且它被设置为尽可能多地使用。自由空间没有问题。执行者数量的增加也无济于事。
然后我尝试配置 Throttle Concurrent Builds(作为实验)。我转到“配置系统”并添加“多项目节流类别”,“最大总并发构建”和“每个节点的最大并发构建”设置为 1。我去了我的一个项目并选择“节流并发构建”选项. 接下来,我选择“将这个项目作为一个或多个类别的一部分进行限制”并选中我刚刚创建的“多项目限制类别”的复选框。结果,当我为我的项目单击“立即构建”时,什么也没发生。它甚至没有进入构建队列。
禁用 Throttle Concurrent Builds 插件使我的项目再次构建。
我有两个问题:
为什么当我启用了 Throttle Concurrent Builds 插件时我无法构建任何项目(构建进入队列并且从不启动或根本不出现)?
有没有其他方法可以强制某些作业按顺序运行(除了更改执行程序的数量)?我有一些执行 Windows 批处理命令的项目。无论我计划构建多少个项目,它们都必须始终单独运行(项目数量及其组合是可变的)。
提前谢谢你,安娜
附注。我刚刚开始与詹金斯的冒险,所以请理解:)
如果您只想让 jenkins 运行任何作业的一个实例,则不需要任何特殊插件。只需确保未选中该作业的“必要时执行并发构建”复选框。
正如该选项的帮助所述:
选中此选项后,此项目的多个构建可能会并行执行。
默认情况下,一次只执行一个项目的单个构建——任何其他开始构建该项目的请求都将保留在构建队列中,直到第一个构建完成。这是一个安全的默认设置,因为项目通常需要对某些资源(例如数据库或硬件)的独占访问。
但是启用此选项后,如果有足够的构建执行程序可以处理此项目,则此项目的多个构建将并行进行。如果在任何时候都没有足够的可用执行程序,任何进一步的构建请求都将照常保留在构建队列中。
这种简单的“一对多”并发模型足以满足广泛的用途,包括您所描述的用途。
如果您需要更详细的控制,您应该只切换到Throttle Concurrent Builds Plugin。例如,“允许 7 个并发实例,每个代理最多 2 个实例(无论可用执行程序的数量如何)。”
| 归档时间: |
|
| 查看次数: |
16212 次 |
| 最近记录: |