下面是一个简化的例子。我有一个名为comp 01的节点。我有一个名为Compatibility的Jenkins作业。
兼容性计划如下:
0 12 * * 1 %IntegrationNode=Software_1
0 17 * * 1 %IntegrationNode=Software_2
0 22 * * 1 %IntegrationNode=Software_3
0 2 * * 2 %IntegrationNode=Software_4
0 7 * * 2 %IntegrationNode=Software_5
作业按计划开始。但有时,由于某些验证失败,前一个作业花费的时间比预期的要长。因此,下一个作业在前一个作业完成之前开始。
在Jenkins中有没有一种方法可以让下一个已排程的工作留在队列中,直到前一个工作完成为止?或者我们可以根据前一个工作的状态来排程?
- 我们已尝试限制此作业的执行程序,但当多个作业排队时,将无法观察到预期的行为。
- 我们也尝试过创建资源组并向其添加多个节点,但当队列中有多个作业时,仍然无法观察到预期的行为。
**EDIT-1:**我们不能使用options { disableConcurrentBuilds() }
,因为我们在不同的节点上并发启动作业。在这里,我们要努力确保在某个节点上启动作业时,同一节点的其他已调度作业应等待当前作业完成。
1条答案
按热度按时间ncgqoxb01#
您是否尝试过设置以下选项?
更新
AFAIK对于你的问题没有带外解决方案。但是你肯定可以实现一些东西。没有看到你的实际管道,我不能给予一个具体的答案。但是这里有一些选择。
选项01
使用Lockable Resources并为每个Jenkins IntegrationNode创建一个资源,并在运行作业时获取该资源,下一个构建将等待,直到释放锁。
选项02您可以实现等待逻辑以检查上一个生成的状态。下面是一个示例管道和可能的Groovy代码,您可以利用它们。