【问题标题】:Multiple dependent projects in Continuous Integration Tools持续集成工具中的多个依赖项目
【发布时间】:2010-12-03 04:38:33
【问题描述】:

如何设置持续集成服务器来构建多个依赖项目?

我想为托管在 mercurial 存储库上的项目设置持续集成流程。但是,该项目在编译时依赖于托管在不同的 mercurial 存储库(都托管在 Google 上)中的另一个项目。

使用 Hudson,我如何为两个项目设置 CI 作业(同时将一个项目的二进制位置传递给另一个项目构建脚本)?其他工具能更好地处理它吗?

这两个项目都是带有 Ant 构建脚本的 Java 项目。

【问题讨论】:

    标签: continuous-integration hudson


    【解决方案1】:

    Hudson 应该能够处理这个问题,因为 Hudson 支持依赖构建(换句话说,一个构建可以通过另一个构建的完成来启动)和Mercurial

    根据this thread,可以:

    配置 Hudson 以发布构建工件,然后通过 HTTP 将这些工件获取到依赖构建。您希望依赖构建的位置独立于第一个构建的位置。

    消息的作者在Hudson Unleashed... 中提供了更多详细信息,这可能也会有所帮助。

    【讨论】:

      【解决方案2】:

      我建议您研究一下 Maven(或者如果您不想迁移到 Maven,Ivy,它与 Ant 集成) - 像您所说的那样处理工件依赖关系并不是 CI 服务器的真正工作。

      也就是说,如果你在 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 正在运行并且找不到它需要的 jarfile。

      【讨论】:

        【解决方案3】:

        在 Cruise Control 中,您有集成队列。您只需按照您想要的顺序将两个项目放在同一个队列中,它们就会一个接一个地构建。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-31
          • 1970-01-01
          • 1970-01-01
          • 2017-12-14
          • 2014-09-05
          • 2015-02-21
          相关资源
          最近更新 更多