Git Jenkins管道分支名称返回null
我正在尝试获取jenkins groovy脚本的分支名称。我无法获取当前的分支名称。我尝试以下方法:Git Jenkins管道分支名称返回null,git,jenkins,groovy,Git,Jenkins,Groovy,我正在尝试获取jenkins groovy脚本的分支名称。我无法获取当前的分支名称。我尝试以下方法: stage('Check out code') checkout scm echo "My branch is: ${env.BRANCH_NAME}" 这是输出-它总是返回null Checking out Revision 33b531b2f1caaf8b64d968e437306f39d2dba1da (origin/pipeline) > git.exe config
stage('Check out code')
checkout scm
echo "My branch is: ${env.BRANCH_NAME}"
这是输出-它总是返回null
Checking out Revision 33b531b2f1caaf8b64d968e437306f39d2dba1da (origin/pipeline)
> git.exe config core.sparsecheckout # timeout=10
> git.exe checkout -f 33b531b2f1caaf8b64d968e437306f39d2dba1da
[Pipeline] echo
My branch is: null
我错过什么了吗
git.exe checkout -f 33b531b2f1caaf8b64d968e437306f39d2dba1da
这将使吉特回购进入一个新的阶段,就其本质而言,吉特回购没有分支机构
发件人:
签出步骤将从源代码管理中签出代码scm
是一个特殊变量,指示签出步骤克隆触发此管道运行的特定版本
因此,${env.BRANCH\u NAME}
为空
如“”中所述,您可以使用groovy语法(将在Jenkins管道DSL中进行调整)获得刚刚签出的SHA1:
此变量仅适用于多分支管线: 分行名称 对于多分支项目,这将设置为正在生成的分支的名称,例如,如果您希望从主分支部署到生产,而不是从功能分支部署到生产
我在一条正常的管线上测试我的工作环境,不知道是否为其他人工作
def branchName = getCurrentBranch()
echo 'My branch is' + branchName
def getCurrentBranch () {
return sh (
script: 'git rev-parse --abbrev-ref HEAD',
returnStdout: true
).trim()
}
我也有同样的问题,但我通过改变
println "${env.BRANCH_NAME}"
到
注意:我的插件也在分离模式下签出:
git checkout -f e10a170e17fb5f9282f903a7b3cd17bd2e181dee
在Jenkins中,有两个管道选项:
env.BRANCH\u NAME
return BRANCHnull
env.BRANCH\u NAME
return BRANCHmaster或BRANCH NAME
在管道作业中,我使用的是
env.GIT_BRANCH
,它解析为origin/{BRANCH}
在多分支作业的情况下,
env.GIT_BRANCH
解析为{BRANCH}
(无origin/
)
\\...
stage('Test') {
steps {
script {
branchName = sh(label: 'getBranchName', returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
println branchName
}
}
}
\\...
试过:
echo“我的分支是:${branch\u NAME}”
?@tim\u yates试过,结果也一样@pogorman-你成功了吗?我有同样的问题(使用普通管道)!此变量仅适用于多分支管道-请参见下面的答案。我现在只使用多分支管道,这意味着您可以尝试从签出的SHA1中猜测涉及哪个分支:
git checkout -f e10a170e17fb5f9282f903a7b3cd17bd2e181dee
\\...
stage('Test') {
steps {
script {
branchName = sh(label: 'getBranchName', returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
println branchName
}
}
}
\\...