哈德森CI&项目依赖项

时间:2010-10-22 13:27:23

标签: hudson build-automation

Hudson CI工具能否解决项目依赖性而不是微不足道的工具? 例如,如何设置场景,其中有两个独立模块(A,B)和模块C依赖于A和B?

我认为没有办法:

  • “构建其他项目”并不保证A,B是在C
  • 之前构建的
  • “构建其他项目后构建”仅保证“在 B之后触发C”(需要 B)
  • 加入插件可以解决这个问题,如果有一个~3个模块。如果有模块A1,.....,A100和C1,.....,C100那么它应该写100个额外的Join触发器并发出100个额外的B重建(换句话说,每个B的反向依赖需要重建B)。因此,如果Join触发器不能轻易地被XML攻击,并且无法跳过未更改B的无意义重建(这可能吗?),这是不切实际的。

是否有某种方法或一些标准的解决方法来实现这一目标?

3 个答案:

答案 0 :(得分:0)

我可能会遗漏一些东西,但你的第二种选择应该有效:

在构建其他项目后构建“仅保证”C在A或B之后被触发“(需要A和B)

这意味着每次A或B发生变化时都会构建C。如果说A和B真正相互独立,那就满足了所有的依赖关系。

答案 1 :(得分:0)

也许您可以尝试使用Ivy插件,该插件使用Apache Ivy来管理依赖项。

答案 2 :(得分:0)

我认为如果您的构建不会马上发生则不重要。因此,您可以更改检查SCM的计划。因此,我们假设将在午夜触发每天检查SCM。然后将B配置为每天凌晨2点(取决于A的构建时间)和2小时后的C进行检查。由于您将拥有A和B的工件,因此C将构建正常。对于新创建的作业,您也会有工件,因为您需要测试配置,只需手动触发第一个构建。

如果这不是一个选项,您可以随时构建所有3个。这意味着您创建了作业D,其中包含A,B和C的构建说明。此作业将由对A,B或C的更改触发。