从中引发拉取请求的GitHub分支名称

从中引发拉取请求的GitHub分支名称,github,jenkins,jenkins-pipeline,pull-request,multibranch-pipeline,Github,Jenkins,Jenkins Pipeline,Pull Request,Multibranch Pipeline,我在Jenkins使用多分支管道作业 如何在GitHub中找到引发拉取请求的分支名称 我正在使用/github-webhook/&还尝试了/ghprbhook/,并尝试了以下环境变量:GIT\u-LOCAL\u-BRANCH,GIT\u-BRANCH,ghprbSourceBranch,但我没有得到任何结果 如果有任何建议,我愿意尝试一下。根据,pull请求ID作为CHANGE\u ID变量公开 顺便说一句,可以通过env在管道的groovy代码中访问环境变量,例如env.CHANGE\u ID

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

如何在GitHub中找到引发拉取请求的分支名称

我正在使用
/github-webhook/
&还尝试了
/ghprbhook/
,并尝试了以下环境变量:
GIT\u-LOCAL\u-BRANCH
GIT\u-BRANCH
ghprbSourceBranch
,但我没有得到任何结果

如果有任何建议,我愿意尝试一下。

根据,pull请求ID作为
CHANGE\u ID
变量公开


顺便说一句,可以通过
env
在管道的groovy代码中访问环境变量,例如
env.CHANGE\u ID

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

env.BRANCH_NAME
用于访问分支名称

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

  • 访问GIT变量

    def scmVars = checkout scm
    def branchName = scmVars.GIT_BRANCH
    
    sh("printenv")
    
  • 打印环境变量

    def scmVars = checkout scm
    def branchName = scmVars.GIT_BRANCH
    
    sh("printenv")
    

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

    分支机构名称

    对于多分支项目,这将设置为正在构建的分支的名称,例如,如果您希望从
    master
    部署到生产,而不是从功能分支部署到生产;如果对应于某种变更请求,则名称通常是任意的(请参阅
    change\u ID
    change\u TARGET

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

    显示了一种可能用作签出的方法。它可能取决于插件版本,并且可能受到与上面相同的问题的影响

    def scmVars = checkout scm
    def branchName = scmVars.GIT_BRANCH
    

    获得它的方法是使用支持
    CHANGE\u分支的环境变量。这是在中添加的,如果您使用的是
    env.CHANGE\u BRANCH
    ,您应该能够引用它。但是,它可能在多分支作业中不可用。

    CHANGE\u BRANCH
    提供了PR的源分支的正确名称


    CHANGE\u TARGET
    提供PR合并的目标名称

    环境变量
    CHANGE\u BRANCH
    应提供源分支名称和
    CHANGE\u TARGET
    目标分支名称。对于来自forks的PR,
    CHANGE\u FORK
    提供FORK的存储库名称。对于原始请购单,
    CHANGE\u FORK
    未设置


    要查看环境变量的描述,请导航到分支作业,然后管道语法>全局变量引用>env。它应该会显示。

    谢谢您的回复。如果我提出一个PR并使用这个命令,我们将得到PR编号作为分支名称。这很奇怪。也许您可以尝试打印所有环境变量和git变量,以查看分支名称是否存储在另一个变量中?这不起作用。詹金斯创建了一个分支,如
    PR-XXX
    ,其中
    XXX
    是PR编号,这就是
    env.branch\u NAME
    中显示的。希望它能把公关的原始分店名称放在那里!有趣的是,虽然在中没有提到这一点,但插件中的代码提到了这些。那么非PR构建呢?我想为我的构建创建一个单独的Jenkins文件。然后我是否必须检测变更分支是否存在,然后假设它不是PR构建?@trusktr是的,如果变更分支存在,则意味着它是PR构建。否则,CHANGE\u分支不存在。