2012-04-12 478 views
20

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

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

+0

的锁和闩锁在回答你引用应该在这里工作,以及在问题中提到的插件。 – 2012-04-12 00:20:17

+1

锁和锁存适用于我的情况,但它在[“潜在弃用”列表中](https://wiki.jenkins-ci.org/display/JENKINS/Proposed+Plugin+Deprecation)。如果它确实被弃用,看起来像新[Exclusion-Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin)将为我完成这项工作(和[节流并发构建]( https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+Builds+Plugin)为其他计数的情况)。 – jackr 2012-04-19 18:55:47

回答

21

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

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

下面是完整的解决方案,因为它花了我一些研究和掠夺: – jackr 2012-04-19 18:45:03

+2

在“管理Jenkins:管理插件”中安装插件。在“管理Jenkins:配置系统”中为您的锁定定义(提供名称)。对于要参与排除的每项作业,请在“:配置:构建环境”中选中“锁定”,然后从下拉列表中选择您的锁定名称。 – jackr 2012-04-19 18:50:41

+1

@jackr你应该编辑你的评论到这个答案,使其完成! – chown 2015-09-12 01:20:16

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. 添加生成步骤 - >添加任何你想添加。 (补充睡眠15,以确保它持续更长的时间来检查并发。)
  7. 添加生成步骤 - >关键段结束
  8. 重复的作业2上面的步骤,请确保您使用相同的锁名称“锁”。
  9. 手动同时构建两个作业。
  10. 监控jenkins下的运行进度 - >排除管理。
4

Lockable Resources Plugin。简单和适合我2016年5月。

安装插件。 在管理詹金斯>配置系统转到可锁定资源管理器。
选择添加可锁定资源。 输入字段的值:名称并点击保存。 警告:请勿在名称字段中输入空格。

在詹金斯>JOB_NAME>配置>常规, 选择复选框:此版本需要锁定的资源。 为字段输入名称或值名称:资源。

开始构建。 Under build#number选择锁定资源。 您应该看到如下所示的内容:此版本已锁定以下资源:resource_name - resource_description

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

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

+0

好的插件,但我看不到在Jenkins> job_name>配置>常规,选择复选框:此构建需要可锁定的资源。在字段中输入名称或值的名称:资源。为管道工作。有什么解决办法吗? – 2016-12-04 06:13:20

+0

你能更详细地描述你的问题吗?你看到“这种构建需要可锁定的资源”吗?你有没有安装插件? – gaoithe 2016-12-05 09:41:44

相关问题