使用Jenkins管道中的现有Env变量创建新的Env变量

时间:2017-08-09 04:41:06

标签: jenkins groovy build environment-variables jenkins-pipeline

我正在尝试生成一些环境。 jenkins管道项目中的变量,并希望将它们注入到我的构建中,但到目前为止我无法这样做,在下面提到的片段中,我已经创建了一个env变量,即 build = 20160107 随机构建号,现在我执行一个批量脚本名称CalculateTempEnvVariablesForBuild.bat,它生成TempEnvVariables.properties 文件。此属性文件包含year,Week_number,week_day的更新值 现在我需要根据 $ {year} 0 $ {Week_number} $ {week_day}

更新我的构建变量
pipeline {
    agent { label 'Build_Machine_Windows_Server' }
    stages {
       stage('Build') {
          steps {
            dir ('E:\\\\Jenkins'){
                 bat 'call E:\\Jenkins\\CalculateTempEnvVariablesForBuild.bat'   

            }  
             load "E:\\Jenkins\\TempEnvVariables.properties" 

             withEnv(['build=${year}0${Week_number}${week_day}']) {
                      echo "${build}"    
                    }

             echo "${year}"
             echo "${week_day}"
             echo "${Week_number}"
          }
       }
    }
}

当我回复$ {build}时,它没有给我更新值,而是给了我简单的字符串 - > $ {year} 0 $ {Week_number} $ {week_day} 我需要的是 20173203 当我单独回复year,week_day和Week_number时,我得到正确的值,如 17,32,03

我想我没有正确设置/注入变量(可能是语法错误)

1 个答案:

答案 0 :(得分:1)

管道代码使用单引号。根据{{​​3}},这意味着插值不是由groovy完成的,而是由底层shell完成的:

  

(注意,这里我们在Groovy中使用单引号,所以变量   扩展是由Bourne shell完成的,而不是Jenkins。)

尝试使用双引号:

withEnv(["build=${BUILD_NUMBER}"]) {
    echo env.build
}