我有两个共享数据库的Jenkins项目。它们不能同时运行。严格来说,除了非并发之外,它们之间没有特定的依赖关系,但是目前我通过运行另一个“下游”来部分地管理这个约束。这大部分时间都有效,但并非总是如此。如果在第二个运行时发生源控制更改,则第一个将再次启动,并且它们将同时运行,并且可能两者都失败了。
这与How to prevent certain Jenkins jobs from running simultaneously?类似但不完全相同不同之处在于我没有“线程数”问题 - 我在任何时候都只运行任何给定项目的最多一个线程,即使在两个(不同项目)构建彼此踩踏的情况。这似乎排除了该主题中的所有几个建议。
Locks and Latches plugin应该解决你的问题。创建一个锁并让两个作业使用相同的锁。这将阻止作业同时运行。
Lockable Resources Plugin。对我来说简单而且运作良好2016年5月。
安装插件。在Manage Jenkins> Configure System中,转到Lockable Resources Manager。 选择添加可锁定资源。输入字段值:名称,然后单击保存。警告:请勿在“名称”字段中输入空格。
在Jenkins> job_name>配置>常规,选择复选框:此构建需要可锁定的资源。在字段的值中输入名称或名称:资源。
开始构建。在build #number下选择Locked Resources。您应该看到类似的内容:此构建已锁定以下资源:resource_name - resource_description。
启动使用相同资源的其他构建。您将在Jenkins状态/菜单中看到显示作业名称的Build Queue。悬停文本显示“开始于”,“等待资源resources_list”,“等待时间”。
(也可以使用资源标签/标签)
添加“作业配置”页面的屏幕截图,因为某些用户似乎存在“此版本需要可锁定资源”的问题:**当未选中该复选框时,您应该只看到“[_]此版本需要可锁定资源”
编辑:以下信息自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执行此操作