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

Fre*_*sen 6 jenkins jenkins-pipeline

我们目前使用Jenkins作业DSL在每个Git分支基础上生成大量Jenkins作业; 多分支管道插件看起来像是一种有趣的方式,可以使用Jenkinsfiles获得一流的作业生成支持,并减少我们维护的作业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设置 - 我们如何在多分支管道构建中完成上述操作?

Jo *_*ste 12

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

假设您有一个包含两个作业的文件夹,两个多分支管道作业:jobAjobB; jobB后应触发jobAS" master.

您可以将此代码段添加到jobBJenkins文件中:

properties([
  pipelineTriggers([
    upstream(
      threshold: 'SUCCESS',
      upstreamProjects: '../jobA/master'
    )
  ])
])
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

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

这至少让 Jenkins 承认它应该在构建“some_project”时触发,即它出现在“查看配置”页面中。

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

话虽如此,也许你会有更多的运气。请让我知道这对你有没有用。

(其他人在这里提出了类似的问题 -> Jenkins: Trigger Multi-branch pipeline on upstream change

  • 当我用 `threshold:` 替换 `result:` 时,这对我有用。我还用`"some_project/" + env.BRANCH_NAME.replaceAll("/", "%2F")`指定了多分支管道的匹配分支 (4认同)