如何在Jenkins管道中读取配置文件
我正在创建一个新的管道作业,在执行细节bat文件之前,有很多变量需要定义如何在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% '''
node('BuildMachine')
{
env.ReleaseNumber='1.00.00'
env.BuildType='Test'
env.Language='ENU'
...
Stage('Build')
{
bat '''
call build.bat %ReleaseNumber%_%BuildType%_%BUILD_NUMBER%
'''
}
}
它会将变量写入一个文件,稍后可以加载该文件以获取变量,但我认为这些变量不会直接在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
此代码的优点是不依赖于配置文件内容的顺序