繁体   English   中英

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

[英]How to access the BRANCH_NAME variable within a Jenkins pipeline running on Windows?

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

知道我做错了什么吗?

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

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

这对我有用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM