【问题标题】:Triggering upstream project builds before downstream project在下游项目之前触发上游项目构建
【发布时间】:2010-12-23 08:31:44
【问题描述】:

我有以下项目布局:

  • 战争项目 A
    • 上游项目
      • 依赖B
      • 依赖C
      • 依赖D

我希望设置 A,以便每次我想触发构建时,它都会首先构建 B、C 和 D。如果 B、C 或 D 的构建失败,那么 A 的构建也会失败.

这似乎是一个常见的构建案例,但我不确定如何完成它。有以下选项,但它们似乎没有正确的关系:

  • 构建触发器 - 在构建其他项目之后构建
    • 将在一些上游项目之后构建当前项目,但我需要控制来自该项目的构建,因为我正在进行 WAR 部署。我只想始终先构建依赖项。
  • 构建后操作 - 构建其他项目
    • 将在此之后构建项目,但这与我想做的事情相反。

Hudson 中是否有适合我的构建配置(或通过插件)?

【问题讨论】:

    标签: build continuous-integration triggers hudson


    【解决方案1】:

    我有一个类似的项目布局,经过一番研究后发现以下答案答案How do I trigger another job from hudson as a pre-build step?
    PreBuild Plugin 是一个可能会在未来工作的插件。

    【讨论】:

      【解决方案2】:

      这是最近出现在 Hudson 邮件列表中的。 Hudson 中没有直接支持这种类型的构建配置。

      看到这个帖子: http://jenkins.361315.n4.nabble.com/On-demand-build-dependency-handling-simple-2-job-build-td624395.html

      您可以使用加入插件来创建“构建+部署”作业。它将 B、C 和 D 作为下游项目,然后“A”将成为连接目标。

      因此 B C 和 D 需要成功完成。如果是这样,那么将启动 A 的简单“部署”作业。如果有任何错误,A 将不会启动。这实际上与您要求的相同。

      您可以在此处阅读有关加入插件的信息: http://wiki.hudson-ci.org/display/HUDSON/Join+Plugin

      【讨论】:

      • 感谢这篇非常详尽的帖子参考。对于我使用 maven2 的构建,我可以对依赖项作业(原始问题中的 B、C 和 D)进行 scm-poll,发布到 maven2 存储库,并在我需要时运行项目 A 的构建。再次感谢。海报是对的,如果你可以依赖 maven/ivy 的依赖管理,你真的不需要这种类型的设置。
      【解决方案3】:

      我认为Join Plugin 是您正在寻找的。因此您设置了触发 B、C、D 的 A-Trigger 作业并等待所有操作完成,然后触发 A。

      【讨论】:

        【解决方案4】:

        看看 Apache Ivy 项目 (http://ant.apache.org/ivy/)。它很好地处理了项目依赖关系,并且它有一个适用于 Hudson 的插件。从你描述问题的方式来看,我认为这个解决方案对你有用。

        【讨论】:

        • 我在原始帖子中没有提到我们已经在所有构建中使用了 maven2。我对纯粹的原子、分组、构建如此着迷,以至于我没有意识到 maven2/scm 轮询会非常有效地完成这个技巧。感谢您提供信息。
        猜你喜欢
        • 2017-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        • 1970-01-01
        • 1970-01-01
        • 2013-07-28
        • 2018-08-20
        • 1970-01-01
        相关资源
        最近更新 更多