在 Jenkins 中使用 ReadJSON 读取 json 子元素

问题描述 投票:0回答:1

我有一个包含以下内容的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}
但没有成功。

json jenkins jenkins-groovy
1个回答
0
投票

你的语法不对。尝试以下方法。

env.PACKAGE_CPU = props['packages'][env.VM_PACKAGE]['Cpu']
© www.soinside.com 2019 - 2024. All rights reserved.