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

时间:2013-12-16 16:00:55

标签: jenkins jenkins-plugins

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

但是如果(比方说)4或5个git提交背靠背我不想要运行4个或5个作业 - 只需要一个作业进行最后一次提交。所以基本上如果构建队列中有一个类型为“X”的作业,我不希望队列中有另一个类型为“X”的作业。

2 个答案:

答案 0 :(得分:3)

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

  1. 第一份工作将立即排队并立即运行。
  2. 在源更改时,下一个作业将排队等待,直到第一个作业完成。
  3. 第三次SCM更改将检测已在队列中的作业,而不执行任何操作。
  4. 当第一个工作完成后,下一个工作将开始 - 并且将在SCM启动时使用SCM中的任何内容(而不是在其安排的那一刻)。
  5. 可以使用参数,并发构建,作业限制等来改变这种行为。我的知识可能也已经过时(Jenkins的发展非常快)。

    侧面说明:多个构建不一定是坏事 - 它们会为您提供失败的位置,这可能会让您更快地识别违规提交。对于10分钟的构建来说并不重要,但是如果你的构建变得比那个大,那么这可能是一个问题(对于一个庞大的团队,你可以在30分钟内完成很多提交)。

答案 1 :(得分:1)

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

如果你每15分钟检查一次新的提交是否发生并且你的工作只需要10分钟就可以运行,那么你就不可能有另外的执行暂停(除非有人要求“手动”构建......)。 / p>

为避免后一种情况,您可以考虑Throttle Concurrent Builds plugin