我正在尝试获取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 core.sparsecheckout # timeout=10
> git.exe checkout -f 33b531b2f1caaf8b64d968e437306f39d2dba1da
[Pipeline] echo
My branch is: null
我错过了什么吗?
8条答案
按热度按时间uurity8g1#
此变量仅适用于多分支管道:
分支_NAME对于多分支项目,这将被设置为正在生成的分支的名称,例如,如果您希望从主分支而不是功能分支部署到生产。
我在一条正常的管道上测试
xfyts7mz2#
在Jenkins中,有两种管道选项:
1.新建项目-〉管道--〉
env.BRANCH_NAME
返回分支null
1.新建项目-〉多分支管道--〉
env.BRANCH_NAME
返回分支master or branch name
46scxncf3#
我的变通办法,不知道是否为别人工作。
vxbzzdmp4#
这将使git repo进入一个detached HEADmode,从本质上讲,它没有分支。
从Jenkinsfile开始:
checkout 步骤将从源代码管理 checkout 代码;
scm
是一个特殊变量,它指示 checkout 步骤克隆触发此管道运行的特定修订版本。所以
${env.BRANCH_NAME}
为空。正如在“Jenkins Workflow Checkout Accessing BRANCH_NAME and GIT_COMMIT“中所提到的,您可以使用groovy语法获得刚刚 checkout 的SHA1(将在Jenkins管道DSL中进行修改):
jexiocij5#
在管道作业中,我使用
env.GIT_BRANCH
,它解析为origin/{BRANCH}
在多分支作业的情况下,
env.GIT_BRANCH
解析为{BRANCH}
(无origin/
)。tpgth1q76#
我也遇到了同样的问题,但我通过更改
至
注意我的插件也在分离模式下 checkout :
lh80um4z7#
您可以从简单的管缐使用下列指令码:
q3aa05258#
这个代码对我很有效。