我想创建一个变量,使我可以访问各种YAML结构。
envFile是包含以下数据的YAML文件:
ENVNAME:
MYSYS:
MYSUBSYS:
MYDETAIL:
version: 1.0.0
path: C:\wwwroot\sys
MYSYS2:
MYSUBSYS2:
version: 1.0.1
path: C:\wwwroot\sys2
重要的是MYSYS2没有MYDETAIL级别
在Jenkins管道中,我正在使用:
envs = readYaml file: envFile
然后我可以使用以下方法获取版本值:
verNum = envs."${environment}"."${sysName}"."${subSysName}"."${detailName}".version
但是当我想获得MYSYS2的版本时,我应该使用(没有detailName):
verNum = envs."${environment}"."${sysName}"."${subSysName}".version
所以我需要变量取决于sysName。
我想使用如下语法:
if (sysName == 'MYSYS'){
mySuperVariable = "${environment}"."${sysName}"."${subSysName}"."${detailName}"
}
else if (sysName == 'MYSYS2'){
mySuperVariable = "${environment}"."${sysName}"."${subSysName}"
}
(...)
sysVer = envs."${mySuperVariable}".version
答案 0 :(得分:1)
如果我没记错的话,您可以通过map[key][sub-key]
访问地图。因此,在您的情况下,它将是:
if (sysName == 'MYSYS'){
mySuperVariable = envs[environment][sysName][subSysName][detailName]
}
else if (sysName == 'MYSYS2'){
mySuperVariable = envs[environment][sysName][subSysName]
}
(...)
sysVer = mySuperVariable['version']