我正在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合并的目标名称。
有几个不同的参数,取决于上下文,找到正确的参数可能会很困难。
BRANCH_NAME
对于多分支项目,它将设置为正在构建的分支的名称,例如,如果您希望从
master
部署到生产环境但不从功能分支部署,则相应的更改请求的名称通常是任意的(请参阅CHANGE_ID
和CHANGE_TARGET
)。
这可以是分支名称(如分支构建中的名称)或某些其他标识符(如拉取请求ID)。文档明确指出它可以是任何一个,但如果您没有阅读完整的文档,则这是令人惊讶的行为。
MZ2010的另一个答案显示了一种可能作为检查的方法。它可能取决于插件版本,并可能受到上述相同问题的影响。
def scmVars = checkout scm
def branchName = scmVars.GIT_BRANCH
CHANGE_BRANCH
环境变量的GitHub Branch Source Plugin 来获取它。这个功能是在 JENKINS-43418 中添加的,如果您正在使用env.CHANGE_BRANCH
,您应该能够引用它。但是,在Multi-branch jobs中可能无法使用。CHANGE_BRANCH
代表源分支名称,CHANGE_TARGET
代表目标分支名称。对于来自分支的PR,CHANGE_FORK
会给出fork存储库的名称。对于来自原始存储库的PR,CHANGE_FORK
未设置。对于多分支流水线,请使用:
env.BRANCH_NAME
用于访问分支名称。
编辑:如果您需要调试环境变量或git变量,可以尝试:
访问GIT变量
def scmVars = checkout scm
def branchName = scmVars.GIT_BRANCH
打印ENV变量
sh("printenv")
PR-XXX
的分支,其中 XXX
是 PR 编号,而这就是在 env.BRANCH_NAME
中显示的内容。但希望它能将 PR 的原始分支名称放入其中! - trusktr