我继承了一个稍微奇怪的设置(更改它将耗费时间):
我正在使用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#103
是 job#102
的不必要重复。
更新:从@Slav的答案中,我意识到我的表述不够清晰。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的角度来看,每个排队的构建都是不同的。
我希望消除这个积压。
可以通过以下方式实现:
- 当作业#101正在运行时,请勿轮询SCM(最佳选项)
- 当作业#103排队时-如果作业#102尚未开始,则删除作业#102。
- 还有其他方法吗?
这可行吗?如果可以,如何实现?