【问题标题】:How to specify prerequisite jobs in Hudson如何在 Hudson 中指定必备作业
【发布时间】:2011-02-19 15:45:59
【问题描述】:

我有一份 Hudson 工作,只是对第三方库进行签出/更新。将此工作称为 A。

其他几个工作依赖于这个库。称他们为 Job B 和 C。他们使用 Job A 签出的东西,并且需要它是最新的。

我的问题是,我如何要求 Job B 和 C 在运行其构建例程之前始终运行 Job A(以更新库)?

如果这不可能,有人可以推荐另一种方法来达到同样的效果吗?

【问题讨论】:

    标签: build-process build build-automation hudson


    【解决方案1】:

    您可以通过“子”作业以另一种方式进行操作。例如,您可以配置 A 在成功后触发 B 和 C。 (您将在作业 A 配置页面上找到该选项。

    如果您需要更高级的条件来触发子作业,可以查看Parametrized Trigger plugin

    【讨论】:

    • 问题是这使得依赖有点倒退。我不希望构建 A 导致 B 和 C 构建。我希望构建 B 或 C 以使 A 先构建。
    • 我认为你的方法也会给你带来问题,因为 A 被构建了两次而不是一次。
    • 您所说的可能在很多情况下都有意义。对我们来说,Job A 实际上并不是一个“构建”,只是一个 SVN 更新,它会很快完成。 B 和 C 是真正的构建,需要更长的时间。每次需要构建它们时都构建它们将比重复构建 A 慢得多。
    • 为什么要做一个只更新 SVN 的工作? B 和 C 将在构建之前进行自己的 SVN 更新,Hudson 处理得很好(这是默认行为)。
    【解决方案2】:

    在考虑了这个问题之后,我想我可能把事情复杂化了。

    由于 Job A 中的库很少更新,因此我们认为每隔一段时间扫描 SVN 并在有更改时更新可能是可以接受的。如果 B 和 C 的构建在签入 A 的更改后立即开始,则它们的构建很有可能会错过库更改,但这应该很少成为问题。

    【讨论】:

      【解决方案3】:

      如果我关注你,听起来你可能需要Join plugin

      此插件允许在所有直接下游作业完成后运行作业。这样,执行可以分支并并行执行许多步骤,然后在所有并行工作完成后只运行一次最终聚合步骤。该插件可用于创建“菱形”形状的项目依赖项。这意味着有一个父作业启动多个下游作业。完成这些作业后,将运行单个聚合作业

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 2013-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多