如何防止某些Jenkins作业同时运行?

Jon*_*nik 62 hudson jenkins

我有几个使用共享资源(数据库)的作业,有时可能导致构建在(罕见)事件中失败,即同时触发作业.

例如,给定作业A到E,是否有任何方法可以指定A和C 不应该同时运行

除了上述资源之外,构建彼此独立(不是例如在上游/下游关系中).

"暴力"方式将执行器的数量限制为一个,但如果大多数作业可以同时执行并且构建服务器上不缺乏计算资源,那么这显然不太理想.

sti*_*sti 39

目前有两种方法可以做到这一点:

  • 由于某种原因,仅使用一个执行器的简单方法对我不起作用。我将其配置为 1,4 天后有人报告说有 2 个正在运行,..并且配置显示:max = 1。 (2认同)

pwa*_*wan 14

锁和锁存器插件这里应该帮助.

这个问题可能是一个骗局我如何确保在哈德森中只有一种类型的工作同时运行?

  • 正如@John T Dyer所指出的,Locks和Latches在[建议的插件弃用列表]上(https://wiki.jenkins-ci.org/display/JENKINS/Proposed+Plugin+Deprecation).阅读该页面上的评论,似乎**[Throttle Concurrent Builds](http://wiki.hudson-ci.org/display/HUDSON/Throttle+Concurrent+Builds+Plugin)**应该是一个可行的替代品. (8认同)
  • 谢谢,让它工作!快速参考:1)定义锁定管理Jenkins - >配置系统 - >锁定**(在我的例子中我使用了共享数据库的名称); 2)设置相关作业以使用锁:**配置 - >构建环境 - >锁** (3认同)

Kon*_*agg 5

这是一个古老的问题,但是这个话题仍然很重要,尤其是在Jenkins上运行应用程序测试时。

锁定资源插件允许您定义可用于构建的可锁定资源。如果您的构建需要资源,则它将获得锁定。如果第二个版本需要相同的资源(该资源随后已被锁定),则会排队等待该资源释放。

尽管文档使用计算机或打印机作为可锁定资源的示例,但上面的数据库示例也应适用。

与2012年的答案中提到的Locks and Latches插件相反,该程序包似乎正在维护中(当前为2016年)。