Jenkins 有办法停止或减少重复作业吗?

问题描述 投票:0回答:3

我有一份任何提交都会开始的工作。运行需要5-10分钟。

但是,如果(比如说)4 或 5 个 git 提交连续出现,我不希望运行 4 或 5 个作业 - 只是最后一次提交的一个作业。因此,基本上,如果构建队列中存在“X”类型的作业,我不希望队列中存在另一个“X”类型的作业。

jenkins jenkins-plugins
3个回答
3
投票

如果您使用 SCM 触发器、默认作业参数,并且不选中“必要时执行并发构建”选项,那么这应该是默认行为。

  1. 第一个作业将排队并立即运行。
  2. 源更改时,下一个作业将排队并等待第一个作业完成。
  3. 第三个 SCM 更改将检测队列中已有的作业,但不执行任何操作。
  4. 第一项工作完成后,下一项工作将开始 - 并将使用 SCM 启动时(而不是计划时)中的任何内容。

可以使用参数、并发构建、作业限制等来改变这种行为。我的知识也可能已经过时了(Jenkins 发展得非常快)。

旁注:多个构建不一定是坏事 - 它们为您提供失败局部性,这可能使您可以更快地识别有问题的提交。对于 10 分钟的构建来说这并不重要,但如果你的构建变得比这个大,那就可能是一个问题(对于一个大团队,你可以在 30 分钟内进行大量提交)。


1
投票

基本上你只是想每 5 分钟或 10 分钟检查一次是否有新的提交?您可以在触发配置中执行此操作:每 X 分钟监控一次源代码控制(CRON 语法:*/15 * * * * 每 15 分钟一次)

如果您每 15 分钟检查一次是否发生新的提交,并且您的作业只需要 10 分钟即可运行,那么您就不可能有另一个待执行的执行(除非有人要求“手动”构造......)。

为了避免后一种情况,您可以考虑使用 Throttle Concurrent Builds 插件


0
投票

我的客户要求是每一分钟检查一次导致问题的原因 如果我的管道仅触发一次提交,有什么方法可以避免吗?

© www.soinside.com 2019 - 2024. All rights reserved.