我的一位客户有一些自由式Jenkins工作,显示"#${BUILD_NUMBER}|${BRANCH_NAME}"
在使用名为" Build Name Setter"的插件的作业的说明或displayName中。
不幸的是,这个插件只能在自由式作业中正常工作。
我已尝试在结帐步骤之后添加以下行:
currentBuild.displayName = "#${BUILD_NUMBER}|${BRANCH_NAME}"
但我收到的错误是" BRANCH_NAME"没有设定。
我必须使用" SCM步骤"而不是专用的插件,因为我克隆的存储库是一个TFS-Git存储库,它的插件没有这个功能。
这是SCM步骤中已知的问题,特别是在管道作业中,但我想知道是否有人找到了我可以实现的任何解决方法,以在作业的页面中显示此信息。
答案 0 :(得分:1)
我通过做一些非常接近@haschibaschi建议的事情解决了这个问题,但在我的案例中,我将BRANCH_NAME写入工作区中的groovy文件并将其加载到BRANCH_NAME变量中。
stage ('Checkout SCM') {
checkout([$class: 'GitSCM', branches: [[name: '*/feature/*']], doGenerateSubmoduleConfigurations: false, extensions: [], url: 'http://TFS_SERVER:8080/tfs/DefaultCollection/PC_International/_git/project']]])
bat """
cd %workspace%
set branch="git rev-parse --abbrev-ref HEAD"
FOR /F "tokens=*" %%i IN (' %branch% ') DO SET BRANCH_NAME=%%i
echo %BRANCH_NAME% > BRANCH_NAME.groovy
"""
BRANCH_NAME = readFile('BRANCH_NAME.groovy')
currentBuild.displayName = "# ${BUILD_NUMBER} | ${BRANCH_NAME}"
}
答案 1 :(得分:0)
只需手动获取分支名称并将其分配给BRANCH_NAME。
这样的事情(没有验证代码):
var api = new BankApi()
答案 2 :(得分:0)
在Jenkins文件中,$ {env.BRANCH_NAME}应该有效。