我目前正在测试 Jenkins 2.0 的流水线方法,看看它是否适用于我正在使用的构建环境。
首先是环境本身。它目前由多个 SCM 存储库组成。每个存储库包含多个分支,用于开发的不同阶段,每个分支都使用多种配置构建。并非所有配置都适用于每个存储库。
目前,每个存储库/分支都设置为不同配置的矩阵项目。每个项目都将其构建结果公开为工件,并且这些工件用于下游项目。
不同的存储库相互依赖,因此上游作业的成功构建会触发一些特定的下游作业。目前一切正常,但设置新分支或调整构建过程所需的工作量很大,因为需要手动更改许多不同的项目。
现在我想尝试一下新的管道。我的想法是创建多分支管道项目,并Jenkinsfile
在存储库中放置一个包含构建指令的存储库。
主要问题是让构建相互触发,因为基本上特定上游分支中的构建需要触发下游分支。上游项目不知道需要触发哪些下游分支的信息。每个下游项目都从一些上游分支获取工件,理想的解决方案是如果作为工件源的上游构建完成它的构建,将触发下游构建。
问题是只有下游项目真正知道他们需要什么工件。在大多数情况下,分支名称不太可能匹配,这使得从上游项目触发构建非常困难。
目前,这是使用ReverseBuildTrigger
. 但是,一旦它靠近管道,它就会停止工作。
我真的很茫然如何让这个工作。有什么办法可以得到类似于ReverseBuildTrigger
在管道脚本中工作的东西吗?
如果上游单个分支发生更改,也不能触发所有分支的整个下游构建。这将创建太多相同的构建。