从中引发拉取请求的GitHub分支名称
我在Jenkins使用多分支管道作业 如何在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
/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变量,可以尝试:
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分支不存在。