我们有一堆Maven Jenkins项目,其中一些依赖于其他项目。 Jenkins自动计算出上游/下游。
我们可能会遇到这样的情况:
Project A
|_ Project B
|_Project C
意味着A有B作为依赖,B有C作为依赖。
经常会发生这样的情况:如果我同时将更改推送到A,B和C,A可能会首先开始构建,而不会同时将更改推送到B或C,从而导致构建失败。 / p>
最终B和C将构建,他们将重新触发A的构建,这样A将变为绿色,但我想知道是否有办法避免这些临时故障。
我认为quiet time
可以帮助解决这个问题,但看起来这只是为了在短时间内完成多次推送时不会触发同一项目的多个构建。我希望它会延迟构建x秒,并在结束时分析队列并找出应该首先构建的内容。
Jenkins中是否有任何内容可以帮助实现这种情况?
答案 0 :(得分:1)
我可以帮你解决一下
提供quiet time
作为5
或10
。现在配置Project A
- > Block build when upstream project is building
。因此,使用quiet time
Project A
作业将等待5
或10
秒。正如您所说,您将同时将更改推送到Project B & C
,现在将为这些项目启动构建。现在,当Project A
恢复时,由于此选项Block build when upstream project is building
,它无法构建。 Project B & C
也是如此。希望这会有所帮助。
我有另一个解决方案。这也可能对你有所帮助。根据您的要求选择。
Build after other projects are built
使用此选项并选择Trigger only if build is stable
选项。因此,如果依赖项失败,该项目将无法构建。希望这会有所帮助。
答案 1 :(得分:0)
我认为你的工作A,B和C因推送/提交而被触发。 如何配置在推送/提交时触发的包装器作业,该作业将根据提交的内容确定要执行哪个下游作业以及按哪个顺序执行?