如何设置持续集成服务器来构建多个依赖项目?
我想为在mercurial存储库上托管的项目设置持续集成过程。但是,该项目对托管在不同的mercurial存储库中的另一个项目(在Google上托管)具有编译时依赖性。
使用Hudson,如何为两个项目设置CI作业(同时将一个二进制位置传递给另一个项目构建脚本)?其他工具能否更好地处理它?</ p>
这两个项目都是使用Ant构建脚本的Java项目。
答案 0 :(得分:5)
我建议调查Maven(或者如果你不想迁移到Maven,Ivy,它与Ant集成) - 它不是CI服务器的工作,就像你所说的那样处理工件依赖。< / p>
也就是说,如果你在Hudson服务器上有两个作业,比如job_a和job_b,你可以配置job_a来存档它的工件(包括你在job_b中需要的jar文件),然后启动job_b。它结束了。然后,在job_b中,您可以使用ant的get任务从http://hudsonserver/job/job_a/lastStableBuild/artifact/jarfile.jar(等)下载jar文件。在那个位置总会有一些东西,因为它是job_a的最后一个稳定版本的符号链接,所以你不必担心job_b运行而不是找到它需要的jar文件。
答案 1 :(得分:4)
Hudson应该能够处理这个问题,因为Hudson支持两个依赖构建(换句话说,构建可以通过完成另一个构建来启动)和Mercurial。
根据this thread,可以:
配置Hudson以发布构建工件,然后HTTP将这些工件获取到依赖构建。您希望依赖构建的位置独立于第一个构建的位置。
该消息的作者在Hudson Unleashed...中提供了一些可能有用的详细信息。
答案 2 :(得分:0)
在Cruise Control中,您有集成队列。您只需按照您想要的顺序将两个项目放在同一个队列中,它们就会一个接一个地构建。