我目前正在测试Jenkins 2.0的管道方法,看看它是否适用于我正在使用的构建环境.
首先是关于环境本身.它目前由多个SCM存储库组成.每个存储库包含多个分支,用于开发的不同阶段,每个分支都使用多个配置构建.并非所有配置都适用于每个存储库.
目前,每个存储库/分支都设置为不同配置的Matrix项目.每个项目都将它的构建结果公开为工件,并且这些工件在下游项目中使用.
不同的存储库相互依赖,因此在上游作业上的成功构建会触发一些特定的下游作业.目前一切正常,但设置新分支或调整构建过程所需的工作量很多,因为需要手动更改许多不同的项目.
现在我想尝试新的管道.我的想法是创建多分支管道项目,并Jenkinsfile在包含构建指令的存储库中放置一个.
主要问题是使构建相互触发,因为基本上是特定上游分支的构建需要触发下游分支.上游项目不知道下游分支需要触发的信息.每个下游项目从一些上游分支获取工件,理想的解决方案是,如果作为工件源的上游构建完成它的构建,将触发下游构建.
问题是只有下游项目真正知道他们需要什么工件.在大多数情况下,分支名称不太可能匹配,这使得从上游项目触发构建变得非常困难.
目前这是使用ReverseBuildTrigger.但是,一旦它接近管道,这件事就会停止工作.
我真的不知道如何让这个工作.有没有办法得到类似ReverseBuildTrigger工作内部管道脚本?
如果单个分支上游发生更改,也会触发所有分支的整个下游构建,这不是一个选项.这会产生太多相等的构建.
有谁知道从 Jenkinsfile 中设置作业属性的正确方法,特别是构建触发器?(声明性管道脚本,在多分支管道作业中)。
为清楚起见,我需要为多分支项目中的底层作业设置特定的构建触发器。我可以在 GUI 中配置的总体多分支项目的触发器。
尝试过这里列出的方法: Jenkins 多分支管道和指定上游项目
我收到错误,说从 v0.8 开始我应该使用选项步骤:https ://jenkins.io/doc/book/pipeline/syntax/#declarative-pipeline
但是我看不到那里列出的任何允许在 options 指令中设置构建触发器的步骤。
服务器上的每个分支作业文件夹中都有一个 config.xml,但我认为当我再次运行该作业时,这将被覆盖,因为它们位于多分支作业下。
还有一个选项可以将不同的属性传递到不同的分支(为分支设置例外),但我看到的唯一选项是抑制 SCM 提交。
我的总体目标是尝试制作一个单独的 Jenkinsfile,动态地允许多分支项目中的所有底层作业由它们依赖的上游构建触发。
第 1 步:弄清楚如何设置属性:)
第 2 步:使用上游依赖属性动态填充每个构建,这意味着它们会在某些构建完成时启动。
问题仅涉及第 1 步,第 2 步正是我想要到达的地方。