我是Jenkins Pipeline插件的新手,尤其是multibranch管道插件的新手。在标准版本中,我可以访问$ GIT_BRANCH变量来了解正在构建的分支。但是,该变量未在multibranch管道中设置。我也尝试了env.GIT_BRANCH,并尝试将$ GIT_BRANCH作为参数传递给构建。似乎没什么用。我假设,因为构建知道正在构建的分支(我可以在控制台输出的顶部看到分支名称,有一些我可以使用,我只是找不到它的任何引用。
以下是为什么这很重要的一个例子。我们正在使用gitflow模式。我们有dev,release和master分支,它们都用于创建工件。 dev分支自动部署,另外两个没有。还有功能,错误修复和修补程序分支。应该构建这些分支,但不会产生伪像。如果他们的代码有问题,他们应该只是用来通知开发人员。我需要知道正在构建哪个分支才能运行正确的步骤。
任何帮助将不胜感激。
答案 0 :(得分:80)
env.BRANCH_NAME
变量包含分支名称。
从Pipeline Groovy Plugin 2.18开始,您也可以使用BRANCH_NAME
(env
不是必需的,但仍然被接受。)
答案 1 :(得分:10)
目前还没有专门的变量(JENKINS-30252)。在此期间,您可以利用子项目名称取自分支名称的事实,并使用
env.JOB_NAME.replaceFirst('.+/', '')
击> <击> 撞击>
现已解决此问题,请参阅Krzysztof Krasoń's answer。
答案 2 :(得分:2)
在Jenkins多分支管道工作中要考虑两个分支:
env.BRANCH_NAME
。该名称可能与git分支的名称相同,但也可能称为PR-123或类似名称env.GIT_BRANCH
。这是git中的实际分支名称。因此,作业可能具有BRANCH_NAME = PR-123和GIT_BRANCH = my-scm-branch-name
答案 3 :(得分:1)
我发现这个stackoverflow帖子示例很有用:Git Variables in Jenkins Workflow plugin
sh '//...
git rev-parse --abbrev-ref HEAD > GIT_BRANCH'
git_branch = readFile('GIT_BRANCH').trim()
echo git_branch
//...
'
答案 4 :(得分:1)
Jenkins文档列出了供您仔细阅读的here的所有env变量
答案 5 :(得分:0)
另一种方法是使用git
命令来获取当前jenkins管道上的分支名称。例如,您可以添加以下代码段以在Jenkinsfile
中打印分支名称。
...
script {
def BRANCH = sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
echo ${BRANCH}
}
...