引发Pull Request的GitHub分支名称

时间:2017-12-12 14:24:09

标签: github jenkins jenkins-pipeline pull-request multibranch-pipeline

我在Jenkins使用Multibranch Pipeline Job。

如何在GitHub中找到从中引发Pull Request的分支名称?

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

如果有任何建议,我很乐意尝试。

5 个答案:

答案 0 :(得分:2)

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

CHANGE_TARGET给出PR合并的目标名称

答案 1 :(得分:1)

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

env.BRANCH_NAME

用于访问分支名称。

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

  1. 访问GIT变量

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

    sh("printenv")
    

答案 2 :(得分:1)

有一些不同的参数,根据上下文可能很难找到正确的参数。

  

<强> BRANCH_NAME

     

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

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

other answer by MZ2010显示可能作为结帐工作的方式。它可能取决于插件版本,可能会受到与上述相同的问题的影响。

def scmVars = checkout scm
def branchName = scmVars.GIT_BRANCH

如果您使用支持CHANGE_BRANCH环境变量的GitHub Branch Source Plugin,那么您可以获得它的方式。这已添加到JENKINS-43418中,如果您使用的是env.CHANGE_BRANCH,则应该能够引用它。但是,它可能不适用于Multibranch作业。

答案 3 :(得分:0)

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

顺便说一下。环境变量可以通过env在管道的常规代码中访问,例如env.CHANGE_ID

答案 4 :(得分:0)

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

要查看环境变量的说明,请导航到分支作业,然后导航到管道语法 > 全局变量引用 > env。它应该显示 the description of those variables