如何使用Jenkins Git插件获取本地Git分支名称?

68

我正在使用Jenkins Git 插件(v2.0)中的“分支指定器”选项在特定分支上运行构建,例如1.4

在这种情况下,${GIT_BRANCH} 包含值为 origin/1.4

如何获取用于克隆的本地Git分支名称(即没有origin/前缀的1.4)?

我尝试了带有分支名称1.4 的“检出到特定本地分支”附加行为,但什么也没改变。

我已经在GitHub上看到相关的PR,但它被拒绝了(因为它只修复了一个与仅有origin远程一起使用的情况)。


你为什么关心本地分支的名称(如果有的话)?git name-rev 是否能给你想要的结果? - Magnus Bäck
由于此功能由插件提供:https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-Environmentvariables - Max Romanovsky
我也遇到了这个问题。最近版本的插件开始在前面添加“origin/”。我需要获取分支名称,因为我正在另一个位置检出代码。 - ifightcrime
我一直在尝试弄清楚为什么Jenkins没有为我的构建设置GIT_*环境变量。原来是因为我已经配置了Jenkins来监视多个分支。有一个功能请求来支持这个:https://issues.jenkins-ci.org/browse/JENKINS-7554 - markrian
存在另一个变量 GIT_BRANCHGIT_LOCAL_BRANCH 的区别。 - Sandburg
14个回答

2
今天我遇到了一个问题。原因是Jenkins git插件会在你提供的任何分支名称前添加“origin /”。请参见https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

git插件设置了几个环境变量,您可以在脚本中使用: GIT_BRANCH - 当前正在使用的分支的名称,例如“master”或“origin / foo”

因此,当您使用参数GIT_BRANCH = foo进行构建时,Jenkins将只在其前面添加“origin /”。然后,当您执行
git check out ${GIT_BRANCH}

您正在实际进行的是:
git check out origin/foo

为了避免这种情况发生,您可以在构建参数中使用其他内容,比如GIT_BRANCH_NAME或其他任何内容,只要不使用GIT_BRANCH。在配置中,删除GIT_BRANCH参数,然后添加另一个名称为GIT_BRANCH_NAME的参数。然后在“使用参数构建”下,指定您的分支。


1

今天我也遇到了这个问题。似乎当我更改检出特定本地分支的值时,在触发新的构建之前,我需要删除构建服务器上的本地仓库。


0

不需要复杂的 shell 命令即可实现此操作,只需添加以下行:

(必须安装 git 参数插件才能使用:)

在下面的 gitParameter 中添加 branchFilter: 'origin.*/(.*)', 如下所示

pipeline {
    agent any
    parameters {
        gitParameter branchFilter: 'origin.*/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH'
    }

添加您提出的代码行后,我遇到了以下错误。请详细说明您的解决方案及其用法。 org.codehaus.groovy.control.MultipleCompilationErrorsException: 启动失败: WorkflowScript: 4: 无效的参数类型“gitParameter”。有效的参数类型:[booleanParam、choice、credentials、file、text、password、run、string] @ line 4, column 5. gitParameter branchFilter: 'origin./(.)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH' ^1 error - Seweryn Habdank-Wojewódzki
你好 @SewerynHabdank-Wojewódzki,你发的错误提示说明你在jenkins中没有安装git parameter插件,请尝试在服务器上安装该插件后再重试。https://plugins.jenkins.io/git-parameter/ - Kalyan Raparthi
你在提案中有说明这个吗?我没有找到明确的陈述,比如前置条件:安装Git参数插件之类的。 - Seweryn Habdank-Wojewódzki
@SewerynHabdank-Wojewódzki 如果您仔细阅读问题,他们已经指定了使用Jenkins Git插件,这意味着他们已经安装了该插件,因此没有必要再次指定安装。 - Kalyan Raparthi
1
他们已经安装了Jenkins Git插件。你能准确地告诉我他们在哪里提到安装了“git-parameter”插件吗? - Seweryn Habdank-Wojewódzki
我并没有争吵,而是在答案中添加了明确的依赖项,并建议下次不要试图争论,而是在发现、解决和测试缺陷后改进答案。 - Ajax

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接