【问题标题】:Hudson CI & Project dependeciesHudson CI 和项目依赖项
【发布时间】:2011-04-29 04:11:26
【问题描述】:

Hudson CI 工具能否解决项目依赖关系而不是琐碎的依赖关系? 例如,如何设置有两个独立模块(A,B)和模块C依赖A和B的场景?

我认为没有办法:

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

那么有什么方法或标准的解决方法可以实现这一点吗?

【问题讨论】:

    标签: hudson build-automation


    【解决方案1】:

    我可能遗漏了一些东西,但是您的第二个选项应该可以工作:

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

    这意味着每次 A 或 B 发生更改时都会构建 C。如果 A 和 B 真的如您所说的那样相互独立,则满足所有依赖关系。

    【讨论】:

    • 是的,你是对的。如果假设 A 和 B 已经构建,那么对 A 的每次更改都会触发 C 的构建,那么每个 B 的更改都会触发 C 的构建,并且如果对 A 和 B 进行更改,则 C 会重新构建两次。
    • 是的,你是对的。如果假设 A 和 B 已经构建,那么对 A 的每次更改都会触发 C 的构建,那么每个 B 的更改都会触发 C 的构建,并且在对 A 和 B 进行更改的情况下,C 会重建(可能)两次。然而,我的范式完全不同,我没有想到这些“增量”构建。相反,我假设构建服务器不时获得构建请求(例如每 1-2 周一个)并从头开始构建整个系统。我想我必须重新考虑这两种情况....
    【解决方案2】:

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

    【讨论】:

    • 是的,我知道这一点,但在我看来,这又增加了一个麻烦(Ivy),也许是两个(Ivy + 插件)。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-26
      • 2011-07-11
      • 1970-01-01
      • 2013-09-13
      • 2014-11-20
      • 2012-01-03
      • 2020-11-18
      • 2018-08-24
      相关资源
      最近更新 更多