首页 > 解决方案 > 当同时从两个分支提交时,Jenkins 多分支管道作业运行不明确

问题描述

我创建了一个多分支管道,它构建了一项工作。我使用正则表达式处理分支,所以只有主或开发运行。我从 gitlab 触发到管道。如果我与 master 或 development 分开提交,它会触发管道并且管道在正确的分支中运行作业。一切正常。如果我同时从 master 和 development 提交;管道为两个分支运行(管道>主和管道>开发运行),但它们使用相同的工作。所以这项工作在其中一个分支上运行。我希望为每个主分支和开发分支运行两个工作。在此处输入图像描述

我克隆了那份工作来解决我的问题,但我想知道我错过了什么?我可以为多分支使用一项工作,还是应该为每个分支创建不同的工作,并发提交是否安全?

谢谢!

标签: gitjenkinsjenkins-pipeline

解决方案


假设您Jenkinsfile用于多分支管道无条件地触发分支的另一项工作,詹金斯按预期完成了所有工作。

为此,您需要添加一些额外的逻辑。例如,您可以在触发构建时将分支名称作为参数添加到下游构建作业。这应该触发单独的下游构建:

build job: '<job name>', parameters: [string(name: 'Branch', value: env.BRANCH_NAME)]

您也可以使用BRANCH_NAME. 但是我通常喜欢用env.BRANCH_NAME它来表示这是一个环境变量。

但是,也许最好考虑以下几点:

与其使用该build步骤触发另一个作业,不如将该作业的内容集成到Jenkinsfile多分支管道本身中。然后它将每个分支执行一次。这是您可以尽可能高效地使用多分支管道的方式。


推荐阅读