Jenkins 多分支管道和指定上游项目

Jenkins multi-branch pipeline and specifying upstream projects

我们目前使用 Jenkins 作业 DSL 在每个 Git 分支基础上生成大量 Jenkins 作业;多分支管道插件看起来是一种有趣的方式,可以使用 Jenkinsfiles 获得 first-class 作业生成支持并减少我们维护的作业 DSL 的数量。

比如我们有libwidget-serverwidget-server开发分支项目。当 libwidget-server 构建完成时,将触发 widget-server 作业(对于 develop 分支)。这也适用于其他分支。

这利用 Build after other projects are built 在上游构建完成时触发(例如 libwidget-server 导致构建 widget-server)。

多分支管道插件似乎缺少 Build after other projects are built 设置 - 我们如何在多分支管道构建中完成上述操作?

我目前正试图让它为我们的部署工作。 我得到的最接近的是将以下内容添加到下游 Jenkinsfile;

properties([
    pipelineTriggers([
        triggers: [
            [
                $class: 'jenkins.triggers.ReverseBuildTrigger',
                upstreamProjects: "some_project", result: hudson.model.Result.SUCCESS
            ]
        ]
    ]),
])

至少让詹金斯承认它应该在什么时候触发 'some_project' 已构建,即它出现在 "View Configuration" 页面中。

但是到目前为止 'some_project' 的构建仍然没有触发下游 项目符合预期。

话虽这么说,也许你会有更多的运气。 让我知道它是否适合你。

(这里有人问过类似问题 ->

您应该将分支名称添加到您的上游作业(假设您也在为上游作业使用多分支管道)。

假设您有一个包含两个作业的文件夹,都是多分支管道作业:jobAjobBjobB 应该在 jobAmaster 之后触发。

您可以将此代码片段添加到 jobB 的 Jenkinsfile:

properties([
  pipelineTriggers([
    upstream(
      threshold: 'SUCCESS',
      upstreamProjects: '../jobA/master'
    )
  ])
])

(注意这里jobB的任何分支都会在jobA的主人之后触发!)