我在Jenkins使用Multibranch Pipeline Job。
如何在GitHub中找到从中引发Pull Request的分支名称?
我正在使用/github-webhook/
&还尝试使用/ghprbhook/
并尝试使用以下环境变量:GIT_LOCAL_BRANCH
,GIT_BRANCH
,ghprbSourceBranch
,但我没有得到任何结果。
如果有任何建议,我很乐意尝试。
答案 0 :(得分:2)
CHANGE_BRANCH
给出了PR源分支的正确名称。
CHANGE_TARGET
给出PR合并的目标名称
答案 1 :(得分:1)
对于多分支管道,请使用:
env.BRANCH_NAME
用于访问分支名称。
编辑:如果您需要调试env变量或git变量,可以尝试:
访问GIT变量
def scmVars = checkout scm
def branchName = scmVars.GIT_BRANCH
打印ENV变量
sh("printenv")
答案 2 :(得分:1)
有一些不同的参数,根据上下文可能很难找到正确的参数。
<强> BRANCH_NAME 强>
对于multibranch项目,这将设置为正在构建的分支的名称,例如,如果您希望从
master
部署到生产而不是从功能分支部署到生产;如果对应某种变更请求,则该名称通常是任意的(请参阅CHANGE_ID
和CHANGE_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。