You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在Jenkins中使用jq,求嵌套JSON提取ContainerVersions最后版本方案

我来帮你搞定这个需求!首先得说你之前用的jq命令路径写错啦,咱们先修正jq的用法,再给几个适配Jenkins环境的替代方案,毕竟Jenkins里有时候工具权限或预装情况会受限。

修正后的jq命令(如果Jenkins环境能兼容的话)

你的JSON根节点是SupportedVersions数组,所以得先遍历这个数组里的每个对象,再取对应ContainerVersions的最后一个元素。正确的命令应该是:

cat your-file.json | jq '.SupportedVersions[] | .ContainerVersions[-1]'

要是想同时输出EKS版本和对应的最后一个容器版本,让结果更清晰,可以用:

cat your-file.json | jq '.SupportedVersions[] | {EKSVersion: .EKSVersion, LastContainerVersion: .ContainerVersions[-1]}'
方案1:Jenkins原生Groovy Pipeline脚本(最推荐)

Jenkins本身支持Groovy,而且自带JsonSlurper可以直接解析JSON,完全不需要额外安装工具,非常适配Jenkins环境。直接把这段代码放到你的Pipeline里就行:

script {
    // 读取JSON文件内容
    def jsonContent = readFile file: 'your-file.json'
    // 解析JSON
    def versionData = new groovy.json.JsonSlurper().parseText(jsonContent)
    
    // 遍历每个EKS版本条目,输出最后一个容器版本
    versionData.SupportedVersions.each { entry ->
        def eksVer = entry.EKSVersion
        def lastContainerVer = entry.ContainerVersions[-1]
        println "EKS版本 ${eksVer} 对应的最后一个容器版本:${lastContainerVer}"
    }
}
方案2:Python脚本(Jenkins几乎都预装Python)

如果你的Jenkins节点有Python环境,写个简单的脚本也能搞定:

import json

# 读取JSON文件
with open('your-file.json', 'r') as json_file:
    data = json.load(json_file)

# 遍历并输出结果
for item in data['SupportedVersions']:
    print(f"EKS版本 {item['EKSVersion']}:最后一个容器版本是 {item['ContainerVersions'][-1]}")

把这个脚本存成get_last_container_version.py,然后在Jenkins里用sh 'python get_last_container_version.py'执行就行。

内容的提问来源于stack exchange,提问作者user3616775

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:13:20