如何在Windows上运行的Jenkins管道中访问BRANCH_NAME变量?

时间:2017-05-16 13:23:21

标签: windows git jenkins jenkins-pipeline

我写了一个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"

知道我做错了吗?

2 个答案:

答案 0 :(得分:0)

您需要使用Groovy占位符$ {}插入字符串值,即$ {env.BRANCH_NAME}

这将在执行批处理脚本之前用字符串文字替换变量。 %%表示法用于插值windows环境变量,但env.BRANCH_NAME是Jenkins环境变量而不是windows环境变量。

答案 1 :(得分:0)

这对我有用:

  1. “管理 jenkins”->“配置系统”...向下滚动到“全局属性”并选中“环境变量”复选框。
  2. 添加您的变量(即名称:MY_BRANCH,值:“*/master”)
  3. 重启詹金斯
  4. 转到您的构建,然后您可以将构建配置中的变量用作 ${MY_BRANCH}
相关问题