2010-10-22 121 views
0

Hudson CI工具可以解决项目依赖关系而不是微不足道的问题吗? 例如,如何设置两个独立模块(A,B)和模块C依赖于A和B的情景?Hudson CI和项目依赖

有没有办法在我看来:

  • “建设等项目”并不能保证A,B分别为C
  • “建立后,其他项目都建成了”保证只有“C是前建成触发后A B“(需要A B)
  • 加入插件可以解决这个问题,如果有一个〜3模块。如果有模块A1,......,A100和C1,......,C100,则应该写入100个额外的Join触发器并发出100个额外的B重建(换句话说,每个B的反向依赖需求重建B)。因此,如果Join触发器不能被平凡地XML攻击并且无法重写的未改变的B的重建不能被跳过(这是可能的吗?),这是不实际的。

那么有没有某种方法或一些标准的解决方法来实现这一目标?

回答

0

我可能失去了一些东西,但你的第二个选项应该工作:其他项目都建

生成后

”保证只有‘C是A或B触发后’(A和B需要)

这意味着每当A或B发生变化时都会建立C语言。如果A和B相互独立,如同你所说的那样,它可以满足所有的依赖关系。

+0

是的,您是对的。如果有人支持A和B已经构建,而不是每次更改A触发器C的构建,则每个B的更改触发C的构建,如果更改为A和B,则C会重建两次。 – 2010-10-25 09:28:32

+0

是的,你是对的。如果支持A和B已经建立的比A触发器C的每次修改都要更新,那么每个B的修改都会触发C的构建,如果更改为A和B,那么C会重建(可能)两次。 但是,我的范例完全不同,我没有想到这些“增量”构建。相反,我假设构建服务器可以不时获得构建请求(例如每1-2周一次),并且从头开始构建整个系统。 我想我必须重新考虑这两种情况.... – 2010-10-25 09:43:39

0

也许你可以尝试使用Ivy插件,它使用Apache Ivy来管理依赖关系。

+0

是的,我知道这一点,但在我看来,这又增加了一个麻烦(常春藤),也许两个(常春藤+插件)。 – 2010-10-25 09:48:35

0

我认为这不重要,如果你的构建不马上发生。所以你可以改变检查SCM的时间安排。因此,让我们说A会在午夜每天检查SCM。然后将B配置为每天凌晨2点(取决于A的构建时间)和C 2小时后的C检查。既然你会有A和B的文物,C会建立好。对于新创建的作业,您也会有工件,因为您需要测试您的配置,您只需手动触发第一个构建。

如果这不是一个选项,您可以始终构建它们的全部3个。这意味着您创建的作业D包含A,B和C的构建指令。此作业将通过对A,B或C的更改触发。