如何防止两个Jenkins项目/构建同时运行?

时间:2012-04-12 00:13:43

标签: hudson jenkins

我有两个共享数据库的Jenkins项目。它们不能同时运行。严格来说,除了非并发之外,它们之间没有特别的依赖关系,但是目前我通过运行另一个“下游”来部分地管理这个约束。这大部分时间都有效,但并非总是如此。如果在第二个运行时发生源控制更改,则第一个将再次启动,并且它们将同时运行,并且可能都会失败。

这与How to prevent certain Jenkins jobs from running simultaneously?类似但不完全相同不同之处在于我没有“线程数”问题 - 我已经只运行任何给定项目的一个线程任何一次,即使在两个(不同项目)构建彼此踩踏的情况下。这似乎排除了该主题中的所有几个建议。

3 个答案:

答案 0 :(得分:22)

Locks and Latches plugin应解决您的问题。创建一个锁并让两个作业使用相同的锁。这将阻止作业同时运行。

  1. 在“管理Jenkins:管理插件”中安装插件。
  2. 在“管理Jenkins:配置系统”中定义(提供)您的锁定的名称。
  3. 对于您要参与排除的每项工作,
    1. 在“:配置:构建环境”中,选中“锁定”,
    2. 并从下拉列表中选择您的锁名称。

答案 1 :(得分:6)

Lockable Resources Plugin。对我来说简单而且运作良好2016年5月。

安装插件。 在Manage Jenkins>配置系统转到可锁定资源管理器 选择添加可锁定资源。 输入字段值:名称,然后单击保存。 警告:请勿在“名称”字段中输入空格。

在詹金斯> job_name >配置>一般, 选择复选框:此版本需要可锁定的资源。 在字段的值中输入名称或名称:资源。

开始构建。 在build# number 下选择Locked Resources。 您应该看到以下内容:此版本已锁定以下资源: resource_name - resource_description

启动使用相同资源的其他构建。 您将在Jenkins状态/菜单中看到显示作业名称的Build Queue。 悬停文本显示已启动,等待资源 resources_list ,等待时间

(也可以使用资源标签/标签)

添加“作业配置”页面的屏幕截图,因为对于某些用户来说似乎存在问题,其中"此版本需要可锁定资源"不可见:**当未选中复选框时,您应该只看到" [_]此版本需要可锁定资源" enter image description here

答案 2 :(得分:4)

编辑:以下信息自2014年4月10日起生效

排除插件,https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin如果少数构建使用相同的资源,则非常有用 - 例如一个测试数据库。您需要做的就是使用此资源更新所有作业的配置,因此它们永远不会并行运行,而是等待其他人完成。

取自:http://www.kaczanowscy.pl/tomek/2012-07/jenkins-plugins-part-iii-towards-continuous-delivery

此插件会阻止两个或多个作业并行运行。
要进行测试,请执行job1

  1. 配置
  2. 在构建环境下检查"添加资源以管理排除。"
  3. 然后添加 - >新资源 - >名称 - >锁定
  4. 正在构建 - >添加构建步骤
  5. 关键阻止开始
  6. 添加构建步骤 - >添加你想要添加的内容。(添加sleep 15以确保它持续更长时间以检查并发性。)
  7. 添加构建步骤 - >关键块结束
  8. 对job2重复上述步骤,确保使用相同的锁名称' lock'。
  9. 同时手动构建两个作业。
  10. 监控jenkins下的运行进度 - >排除管理。