我在 Jenkins 中使用多分支管道作业。
如何在 GitHub 中找到提出拉取请求的分支名称?
我正在使用/github-webhook/
&/ghprbhook/
并尝试使用以下环境变量:GIT_LOCAL_BRANCH
, GIT_BRANCH
, ghprbSourceBranch
,但我没有得到任何结果。
如果有任何建议,我很想尝试一下。
我在 Jenkins 中使用多分支管道作业。
如何在 GitHub 中找到提出拉取请求的分支名称?
我正在使用/github-webhook/
&/ghprbhook/
并尝试使用以下环境变量:GIT_LOCAL_BRANCH
, GIT_BRANCH
, ghprbSourceBranch
,但我没有得到任何结果。
如果有任何建议,我很想尝试一下。
CHANGE_BRANCH
给出 PR 源分支的正确名称。
CHANGE_TARGET
给出 PR 合并的目标名称
有几个不同的参数,根据上下文很难找到正确的参数。
分店名称
对于多分支项目,这将设置为正在构建的分支的名称,例如,如果您希望
master
从功能分支而不是从特性分支部署到生产环境;如果对应于某种变更请求,名称一般是任意的(参考CHANGE_ID
和CHANGE_TARGET
)。
这可以是分支名称(如分支构建)或其他标识符(如拉取请求 ID)。文档很清楚它可以是任何一种,但是如果您没有阅读完整的文档,这是令人惊讶的行为。
MZ2010的另一个答案显示了一种可能用作结帐的方式。它可能取决于插件版本,并且可能受到与上述相同问题的影响。
def scmVars = checkout scm
def branchName = scmVars.GIT_BRANCH
如果您使用支持环境变量的GitHub 分支源插件,您可以获得它的方式。CHANGE_BRANCH
这是在JENKINS-43418中添加的,如果您使用env.CHANGE_BRANCH
. 但是,它可能在 Multibranch 作业中不可用。
环境变量CHANGE_BRANCH
应该为您提供源分支名称和CHANGE_TARGET
目标分支名称。对于来自 fork 的 PR,CHANGE_FORK
为您提供了 fork 的存储库名称。对于来自原点的 PR,CHANGE_FORK
未设置。
要查看环境变量的描述,请导航到分支作业,然后是Pipeline Syntax > Global Variable Reference > env。它应该显示这些变量的描述。
对于多分支管道,请使用:
env.BRANCH_NAME
用于访问分支名称。
编辑:如果您需要调试 env 变量或 git 变量,您可以尝试:
访问 GIT 变量
def scmVars = checkout scm
def branchName = scmVars.GIT_BRANCH
打印 ENV 变量
sh("printenv")
根据文档,拉取请求 ID 公开为CHANGE_ID
变量。
顺便提一句。环境变量可以通过管道的 groovy 代码访问env
,例如env.CHANGE_ID
.