我写了一个Jenkins管道,git克隆了一个存储库,构建了功能分支代码,如果一切都成功完成,它应该将分支合并到master。
这里是相关代码:
stage ('Merge to master') {
if(currentBuild.result == 'SUCCESS') {
bat """
cd %workspace%
echo "BRANCH_NAME: %BRANCH_NAME%"
echo "Env.BRANCH_NAME: %env.BRANCH_NAME%
git checkout master
REM git merge %GIT_BRANCH%
"""
}
}
负责克隆的代码:
stage ('Checkout SCM') { // This stage is responsible to clone the repository into Jenkins's workspace
checkout([$class: 'GitSCM', branches: [[name: '*/feature/*']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '99f978af-XXXX-XXXX-8147-2cf8f69ef864', url: 'http://TFS_SERVER:8080/tfs/DefaultCollection/PC_International/_git/repo-name']]])
}
我的问题是,似乎没有设置BRANCH_NAME变量,我已尝试通过%BRANCH_NAME%
,%env.BRANCH_NAME%
,%GIT_BRANCH%
和%env.GIT_BRANCH%
访问它无济于事。
在Jenkins构建日志中,它看起来像是:
C:\Program Files (x86)\Jenkins\workspace\Ensure>echo "BRANCH_NAME: "
"BRANCH_NAME: "
C:\Program Files (x86)\Jenkins\workspace\Ensure>echo "Env.BRANCH_NAME:
"Env.BRANCH_NAME:
C:\Program Files (x86)\Jenkins\workspace\Ensure>echo "GIT_BRANCH: "
"GIT_BRANCH: "
C:\Program Files (x86)\Jenkins\workspace\Ensure>echo "Env.GIT_BRANCH: env.GIT_BRANCH"
"Env.GIT_BRANCH: env.GIT_BRANCH"
知道我做错了吗?
答案 0 :(得分:0)
您需要使用Groovy占位符$ {}插入字符串值,即$ {env.BRANCH_NAME}
这将在执行批处理脚本之前用字符串文字替换变量。 %%表示法用于插值windows环境变量,但env.BRANCH_NAME是Jenkins环境变量而不是windows环境变量。
答案 1 :(得分:0)
这对我有用: