18

我在 Jenkins 中使用多分支管道作业。

如何在 GitHub 中找到提出拉取请求的分支名称?

我正在使用/github-webhook/&/ghprbhook/并尝试使用以下环境变量:GIT_LOCAL_BRANCH, GIT_BRANCH, ghprbSourceBranch,但我没有得到任何结果。

如果有任何建议,我很想尝试一下。

4

5 回答 5

21

CHANGE_BRANCH给出 PR 源分支的正确名称。

CHANGE_TARGET给出 PR 合并的目标名称

于 2019-03-16T06:20:26.187 回答
4

有几个不同的参数,根据上下文很难找到正确的参数。

分店名称

对于多分支项目,这将设置为正在构建的分支的名称,例如,如果您希望master从功能分支而不是从特性分支部署到生产环境;如果对应于某种变更请求,名称一般是任意的(参考CHANGE_IDCHANGE_TARGET)。

这可以是分支名称(如分支构建)或其他标识符(如拉取请求 ID)。文档很清楚它可以是任何一种,但是如果您没有阅读完整的文档,这是令人惊讶的行为。

MZ2010的另一个答案显示了一种可能用作结帐的方式。它可能取决于插件版本,并且可能受到与上述相同问题的影响。

def scmVars = checkout scm
def branchName = scmVars.GIT_BRANCH

如果您使用支持环境变量的GitHub 分支源插件,您可以获得它的方式。CHANGE_BRANCH这是在JENKINS-43418中添加的,如果您使用env.CHANGE_BRANCH. 但是,它可能在 Multibranch 作业中不可用。

于 2017-12-13T16:22:30.233 回答
2

环境变量CHANGE_BRANCH应该为您提供源分支名称和CHANGE_TARGET目标分支名称。对于来自 fork 的 PR,CHANGE_FORK为您提供了 fork 的存储库名称。对于来自原点的 PR,CHANGE_FORK未设置。

要查看环境变量的描述,请导航到分支作业,然后是Pipeline Syntax > Global Variable Reference > env。它应该显示这些变量的描述

于 2021-05-03T23:35:08.100 回答
1

对于多分支管道,请使用:

env.BRANCH_NAME

用于访问分支名称。

编辑:如果您需要调试 env 变量或 git 变量,您可以尝试:

  1. 访问 GIT 变量

    def scmVars = checkout scm
    def branchName = scmVars.GIT_BRANCH
    
  2. 打印 ENV 变量

    sh("printenv")
    
于 2017-12-13T08:55:56.183 回答
0

根据文档,拉取请求 ID 公开为CHANGE_ID变量。

顺便提一句。环境变量可以通过管道的 groovy 代码访问env,例如env.CHANGE_ID.

于 2017-12-12T16:53:14.393 回答