首页 > 解决方案 > Jenkins 多分支管道拉取请求

问题描述

我正在使用多分支管道进行拉取请求。创建 pr 时,它会触发 pullrequest 作业。无论如何,是否仅在特定的拉取请求而不是全部触发作业。例子:我有三个分支develop,fb和master。我只想在我创建从开发到主的拉取请求时触发作业,而不是在我创建从 fb 到开发或从 fb 到主的拉取请求时。

标签: jenkinsjenkins-pipelinemultibranch-pipeline

解决方案


在这种情况下,您可能想要运行您的管道,分析基础分支,如果基础分支不符合您的喜好,则停止。

环境变量CHANGE_ID由 github 分支源插件设置,以防分支是拉取请求。

如果已设置,您可以探索名为 的全局对象pullRequest,例如:

    if (env.CHANGE_ID) {
        echo("Looking for PR: PR detected, change id is ${env.CHANGE_ID}")
        def prBase = pullRequest.base
        if (prBase != 'master') {
            currentBuild.result = 'ABORTED'
            error("This PR is over ${prBase} branch, not 'master'. Aborting.")
        }
    }

推荐阅读