我有一个包含以下内容的packages.json 文件:
{
"packages": {
"pkg1":{
"Cpu": "2",
"Memory": "8",
"Disk": "100"
},
"pkg2":{
"Cpu": "4",
"Memory": "16",
"Disk": "200"
}
}
}
我还有一个来自另一个阶段的环境变量
env.VM_PACKAGE
。我想使用此 Jenkins 流程从特定包获取 Cpu、内存、磁盘值:
stage('Parse package details') {
steps {
echo "Read packages JSON file"
script {
def props = readJSON file: "${WORKSPACE}/maintenance-vm/packages.json"
env.PACKAGE_CPU = props['packages'].props["${env.VM_PACKAGE}"].get("Cpu")
env.PACKAGE_MEMORY = props['packages'].props["${env.VM_PACKAGE}"].get("Memory")
env.PACKAGE_DISK = props['packages'].props["${env.VM_PACKAGE}"].get("Disk")
}
echo "Cpu: ${env.PACKAGE_CPU} Memory: ${env.PACKAGE_MEMORY} Disk: ${env.PACKAGE_DISK}"
}
}
因此,例如,如果
${env.VM_PACKAGE}
具有值 pkg2
那么 echo 会这样写: "Cpu: 4 Memory: 16 Disk: 200"
我尝试使用单引号、双引号、没有引号
${env.VM_PACKAGE}
但没有成功。
你的语法不对。尝试以下方法。
env.PACKAGE_CPU = props['packages'][env.VM_PACKAGE]['Cpu']