如何在Jenkins管道中读取配置文件

如何在Jenkins管道中读取配置文件,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我正在创建一个新的管道作业,在执行细节bat文件之前,有很多变量需要定义 node('BuildMachine') { env.ReleaseNumber='1.00.00' env.BuildType='Test' env.Language='ENU' ... Stage('Build') { bat ''' call build.bat %ReleaseNumber%_%BuildType%_%BUILD_NUMBER% '''

我正在创建一个新的管道作业,在执行细节bat文件之前,有很多变量需要定义

node('BuildMachine')
{
  env.ReleaseNumber='1.00.00'
  env.BuildType='Test'
  env.Language='ENU'
  ...

  Stage('Build')
  {
    bat '''
      call build.bat %ReleaseNumber%_%BuildType%_%BUILD_NUMBER%
      '''
  }
}
  • 我可以将这些全局变量保存到配置文件中,存储在git存储库中并读取它吗
  • 这些变量在bat中还能工作吗
  • 插件aka(环境注入器插件)为您提供了几个选项来设置和使用Jenkins作业中的环境变量。
    它会将变量写入一个文件,稍后可以加载该文件以获取变量,但我认为这些变量不会直接在bat中工作。

    如果必须在每个构建中定义变量,您可以(因为Jenkins文件实际上只是Groovy)定义变量并在调用中作为命令行参数使用:

     node('BuildMachine') {
        def releaseNumber='1.00.00'
        def buildType='Test'
        def language='ENU'
    
        Stage('Build')
        {
          bat "call build.bat ${releaseNumber}_${buildType}_%BUILD_NUMBER%"
        }
      }
    

    我假设BUILD_NUMBER是在开始构建作业之前设置的环境变量。否则你可以像其他人一样做。请注意,双引号而不是单引号是该操作所必需的。

    另一个选项是定义一个=文件,然后可以执行以下操作:

    readFile "<your config file>"
    configData = file.split("\n")
        configData.each {
          lineData = it.split("=")
          switch(lineData[0].toLowerCase().trim()){
            case "<key 1>": <varName 1> = lineData[1].trim(); break;
            case "<key 2>": <varName 2> = lineData[1].trim(); break;
            case "<key 3>": <varName 3> = lineData[1].trim(); break;
    ....
          }
        }
    
    
    readFile“”
    configData=file.split(“\n”)
    configData.each{
    lineData=it.split(“=”)
    开关(lineData[0].toLowerCase().trim()){
    案例“”:=lineData[1]。修剪();打断;
    案例“”:=lineData[1]。修剪();打断;
    案例“”:=lineData[1]。修剪();打断;
    ....
    }
    }
    
    然后使用varName调用您提到的bat

    此代码的优点是不依赖于配置文件内容的顺序