在Jenkins(1.550)中,我有两个maven项目,模型和GUI。 GUI项目取决于型号:
<groupId>com.acme</groupId>
<artifactId>gui</artifactId>
<version>1.0.0</version>
...
<dependencies>
<dependency>
<groupId>com.acme</groupId>
<artifactId>model</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
现在,对于每个项目,我让Jenkins配置为定期检查SVN并触发构建,这很好。
仅当一个项目中的文件发生更改时才有效。但是,通常会在两个项目上进行提交,所以假设这两个文件将被提交:
A /model/Car.java
A /gui/CarDialog.java
现在Jenkins将看到GUI项目发生了变化,构建它,但由于缺少/model/Car.java
而失败(因为模型尚未构建)。然后,一段时间后,触发模型中的构建(由于模型中的SVN更改),这构建良好。在那之后,gui将再次建造,这次成功。
我认为这种设置很常见,所以我很确定我忽略了一些东西,但我无法在任何地方找到答案。
什么不起作用是在GUI上设置“正在构建依赖项时阻塞”,因为在GUI构建时,模型构建可能还没有注意到SVN发生了变化,因此没有构建模型。
到目前为止,我只找到了解决方法,最好的工作方法如下:
配置模型以每4分钟检查一次SVN更新:
*/4 * * * *
配置GUI以每8分钟检查一次SVN更新:
*/8 * * * *
此外,阻止GUI构建60秒,如果正在构建依赖项,则阻止构建,并在依赖关系构建完成后启动构建。
这样做的缺点是不鼓励使用*/4
(应该使用H/4
),而且感觉就像是黑客。
关于如何妥善解决我的问题的任何想法?
答案 0 :(得分:3)
经过几个小时的阅读,我找到了一个很好的解决方案:
model/.*
.*
或model/.* ,gui/.*
model, gui
(正确的顺序很重要:上游,......,下游)<强>解释强>: