也许有人可以帮助我。 我想在Jenkins中为一些项目一次运行一个构建,即使队列中有更多的构建。我知道我可以限制执行程序的数量,但它会影响所有项目,这解决方案不适合我。我尝试在这种情况下使用Throttle Concurrent Builds插件,但它不起作用,我不知道为什么。
在我安装此插件之前,所有版本都正确运行。当我安装它(刚刚安装,我没有对配置进行任何更改)构建进入队列并且永远不会启动(我使用2个执行程序,两者都一直处于空闲状态)。我确认我的节点一切正常,它在线,执行器数量等于2,并且它被设置为尽可能多地利用。免费空间没有问题。越来越多的执行者也无济于事。
然后我尝试配置Throttle Concurrent Builds(就像一个实验)。我转到'配置系统'并添加'多项目节流类别',其中'最大总并发构建数'和'每节点最大并发构建数'设置为1.我转到我的一个项目并选择'Throttle Concurrent Builds'选项。接下来,我选择“将此项目作为一个或多个类别的一部分加油”并选中我刚创建的“多项目油门类别”的复选框。因此,当我点击“立即构建”为我的项目时,没有任何事情发生。它甚至没有进入构建队列。
禁用Throttle Concurrent Builds插件使我的项目再次构建。
我有两个问题:
为什么在启用Throttle Concurrent Builds插件时(构建进入队列并且从不启动或根本不显示)我无法构建任何项目?
还有其他方法强制某些作业顺序运行(除了更改执行程序数量之外)吗?我有一些执行Windows批处理命令的项目。无论我计划建立多少个项目(项目数量及其组合是可变的),它们必须始终单独运行。
提前谢谢你, 安娜
PS。我刚开始和詹金斯一起冒险,所以请理解:)
答案 0 :(得分:2)
如果您只想让jenkins运行任何作业的一个实例,则不需要任何特殊插件。只需确保取消选中该作业的“必要时执行并发构建”复选框。
正如该选项的帮助所述:
选中此选项后,可以并行执行此项目的多个版本。
默认情况下,一次只执行一个项目的构建 - 开始构建该项目的任何其他请求将保留在构建队列中,直到第一个构建完成。 这是一个安全的默认设置,因为项目通常需要独占访问某些资源,例如数据库或硬件。
但是启用此选项后,如果有足够的构建执行程序可以处理此项目,则此项目的多个构建将并行进行。如果在任何时候没有足够的可用执行程序,则任何进一步的构建请求将照常保存在构建队列中。
这种简单的“一对多”并发模型足以满足各种用途,包括您所描述的用途。
如果您需要更详细的控制,则只应切换到Throttle Concurrent Builds Plugin。例如,“允许7个并发实例,每个代理最多2个实例(无论可用执行程序的数量是多少)。”
答案 1 :(得分:2)
以下插件适用于Jenkins,并且会执行您正在寻找的内容:
https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin
创建一个' MultiJob'项目,允许您定义阶段'为它的构建。
很多阶段'可以设置为MultiJob项目的一部分,每个阶段都包含"一个或多个"其他"詹金斯的工作。运行MultiJob项目时,将按顺序运行阶段。
因此,为了顺序运行N个作业,将N个阶段添加到MultiJob项目中,然后为每个阶段添加一个作业。
注意:每个阶段都有一个设置,表示'并行运行'或者'顺序运行',我认为它将按顺序或并行运行阶段中包含的作业。但是,当我按顺序设置'那些工作似乎仍然并行。 (我需要进一步研究这个设置。)
答案 2 :(得分:0)
我发现为什么Throttle Concurrent Builds插件没有用。我詹金斯的版本真的很老了。当我升级到2.13时,项目开始以预期的方式构建,这个插件正是我需要的。谢谢你的帮助!
答案 3 :(得分:0)
我使用MultiJob插件通过添加构建步骤来完成此操作。
我在其他项目中使用触发/调用构建,首先输入项目名称,然后选择阻止,直到触发的项目完成构建。我为每个我想按顺序完成的项目添加了一个构建步骤。