【发布时间】: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