如何在作业运行时保持Jenkins SCM轮询

时间:2014-08-26 14:48:04

标签: version-control jenkins queue perforce

所以我继承了一个稍微奇怪的设置(改变它会很费时):

我正在使用Jenkins进行SCM(Perforce)轮询,但触发的作业除了触发本身之外不会以任何方式使用SCM Workspace。然后构建拉出最新版本并从中构建。此设置有效,但会产生不必要的积压:

10:00 submit Rev#100001
10:05 SCM polls this and queue a build job#101
10:06 job#101 start (will take ~2H)
10:30 submit Rev#100002
10:35 SCM polls this and queue a build job#102
11:00 submit Rev#100003
11:35 SCM polls this and queue a build job#103
12:00 job#101 exits
12:01 job#102 start (will take ~2H)

现在假设没有新的提交,job#103job#102不需要的重复。


更新:来自@Slavanswer我意识到我不够清楚。 SCM触发器与拉出代码库无关,导致这种异常:

job#101 reports that it was triggered by Rev#100001 and builds from Rev#100001
job#102 reports that it was triggered by Rev#100002 and builds from Rev#100003
job#103 reports that it was triggered by Rev#100003 and builds from Rev#100003

这也解释了为什么有多个排队的运行:从Jenkins'es POV,每个排队的构建都不同。


我希望消除此积压。

这可以通过例如

来完成
  • 当作业#101正在运行时,不要轮询SCM(最佳选项)
  • 当作业#103排队时 - 如果尚未开始作业,则删除作业#102。
  • 任何其他方式?

这可能吗?如果是这样的话?

1 个答案:

答案 0 :(得分:0)

你确定发生了这种情况吗?即使中间有多个触发器,我也从未见过超过1个排队的运行。

当我遇到构建时间超过轮询间隔的情况时,手动修复它的最简单方法是在作业启动后禁用作业(并在作业完成后重新启用它),但是这样做了仅在例外和人工干预的情况下有用。

如果你想将它用于自动化目的,你应该看看"安静时期"高级选项(在Job Configuraiton下)。