繁体   English   中英

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

[英]How to read config file in 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%
      '''
  }
}
  1. 我可以将这些全局变量保存到配置文件中,存储在git存储库中并读取它吗?
  2. 这些变量还能在蝙蝠中工作吗?

EnvInject插件又名(Environment Injector插件)为您提供了几个在Jenkins作业中设置和使用环境变量的选项。 它将变量写入文件,稍后可以加载以获取变量,但是我认为变量不能直接在bat中工作。

如果必须在每个构建中定义变量,则可以(因为Jenkinsfile实际上只是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;
....
      }
    }

然后使用varName调用蝙蝠

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

暂无
暂无

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

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