我正在使用Jenkins Git 插件(v2.0)中的“分支指定器”选项在特定分支上运行构建,例如1.4
。
在这种情况下,${GIT_BRANCH}
包含值为 origin/1.4
。
如何获取用于克隆的本地Git分支名称(即没有origin/
前缀的1.4
)?
我尝试了带有分支名称1.4
的“检出到特定本地分支”附加行为,但什么也没改变。
我已经在GitHub上看到相关的PR,但它被拒绝了(因为它只修复了一个与仅有origin
远程一起使用的情况)。
我正在使用Jenkins Git 插件(v2.0)中的“分支指定器”选项在特定分支上运行构建,例如1.4
。
在这种情况下,${GIT_BRANCH}
包含值为 origin/1.4
。
如何获取用于克隆的本地Git分支名称(即没有origin/
前缀的1.4
)?
我尝试了带有分支名称1.4
的“检出到特定本地分支”附加行为,但什么也没改变。
我已经在GitHub上看到相关的PR,但它被拒绝了(因为它只修复了一个与仅有origin
远程一起使用的情况)。
因此,当您使用参数GIT_BRANCH = foo进行构建时,Jenkins将只在其前面添加“origin /”。然后,当您执行git插件设置了几个环境变量,您可以在脚本中使用: GIT_BRANCH - 当前正在使用的分支的名称,例如“master”或“origin / foo”
git check out ${GIT_BRANCH}
git check out origin/foo
为了避免这种情况发生,您可以在构建参数中使用其他内容,比如GIT_BRANCH_NAME或其他任何内容,只要不使用GIT_BRANCH。在配置中,删除GIT_BRANCH参数,然后添加另一个名称为GIT_BRANCH_NAME的参数。然后在“使用参数构建”下,指定您的分支。
今天我也遇到了这个问题。似乎当我更改检出特定本地分支
的值时,在触发新的构建之前,我需要删除构建服务器上的本地仓库。
不需要复杂的 shell 命令即可实现此操作,只需添加以下行:
(必须安装 git 参数插件才能使用:)
在下面的 gitParameter 中添加 branchFilter: 'origin.*/(.*)',
如下所示
pipeline {
agent any
parameters {
gitParameter branchFilter: 'origin.*/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH'
}
origin/(.*)
作为 Branch Filter
的值,而不是任何宏/变量。根据文档建议 https://plugins.jenkins.io/git-parameter/。
git name-rev
是否能给你想要的结果? - Magnus BäckGIT_*
环境变量。原来是因为我已经配置了Jenkins来监视多个分支。有一个功能请求来支持这个:https://issues.jenkins-ci.org/browse/JENKINS-7554 - markrianGIT_BRANCH
和GIT_LOCAL_BRANCH
的区别。 - Sandburg