【问题标题】:Jenkins: Wait for multiple project dependencies to finish before buildingJenkins:在构建之前等待多个项目依赖项完成
【发布时间】:2013-07-08 20:31:02
【问题描述】:

我在 Jenkins 中配置了几个相互依赖的项目(使用“构建后”选项)。现在我希望每个项目在开始构建之前等待其所有依赖项完成。

例子:

Project: A
Project: B - Depencies: A
Project: C - Depencies: A, B

当我构建 A 时,将触发 B 和 C 的构建。但是,我希望 C 仅在 A B 完成构建后构建。相反,目前项目 C 将构建两次,一次在 A 完成后,第二次在 B 完成后。

如何配置 Jenkins 项目依赖项以实现此目的?

附言

在任何人提到 Join 插件之前:我已经看过它并不能说它是一个令人满意的解决方案。

【问题讨论】:

  • 这是 Maven(以及 Ant ivy 等类似技术)旨在解决的问题。通过使用构建工件的共享存储库,每个构建都相互独立。像 Jenkins 这样的构建服务器能够确定构建顺序并自动触发依赖于特定构建的最新工件的下游构建。不是对您的问题的简单回答,而是需要考虑的事情,否则您会被 Join 插件卡住:-(
  • 不,使用 Maven 解决这个问题的唯一方法是让它们成为一个项目的所有子模块。否则Jenkins不会去整理绝对的构建顺序。如果你将Jenkins配置为由最新工件的构建触发,我描述的问题仍然会出现。
  • 查看 Maven 文档。请参阅 Jenkins doco 的“自动构建链接..”部分:wiki.jenkins-ci.org/display/JENKINS/Building+a+maven2+project 当开发项目使用其他项目的快照版本时非常有用,如果没有此功能,使用 Maven 快照是非常值得怀疑的。使用 Jenkins 的一大优势。
  • 认真的吗?格式化一年前的帖子?

标签: jenkins dependencies continuous-integration dependency-management


【解决方案1】:

您可以使用JobFanIn plugin。这正是你所需要的

【讨论】:

    【解决方案2】:

    您可以使用DepBuilder plugin 及其特定领域的语言来做到这一点。 对于您的具体示例,构建脚本如下:

    // A, B and C are existing Jenkins jobs
    A -> B
    A -> C
    B -> C
    

    构建项目后,您应该可以看到构建可视化:

    如果上游项目(A,B)中的任何一个构建失败,作业 C 的构建将 不会被触发(但您可以为每个作业单独配置此行为)。有关所有可能功能的更多信息,请务必查看DepBuilder documentation

    【讨论】:

      猜你喜欢
      • 2012-03-18
      • 2021-01-21
      • 2013-01-30
      • 2011-05-11
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2015-05-13
      相关资源
      最近更新 更多