我正在尝试获取我的私有GCR存储库中所有标签的列表。我可以用">gcloud容器图像列表标签";命令如下:
gcloud container images list-tags gcr.io/project-id/REPONAME
DIGEST TAGS TIMESTAMP
6b5727be962a 0.0.4,latest 2020-06-25T14:14:48
4b8c3f9c6ab7 0.0.3 2020-06-22T08:56:01
然而,我需要列表变平,这样我就可以得到标签";0.0.4";以及";最新的";在单独的行中。我试着听从命令。
gcloud container images list-tags gcr.io/project-id/REPONAME --flatten='[].tags'
这给了我输出,这让我惊讶地重复">最新";标记但提交">0.0.4";
DIGEST TAGS TIMESTAMP
6b5727be962a latest 2020-06-25T14:14:48
6b5727be962a latest 2020-06-25T14:14:48
4b8c3f9c6ab7 0.0.3 2020-06-22T08:56:01
我做错了什么,我该如何解决?
我可以重新编写您的观察结果,并认为这是一个错误。
--flatten
似乎正确枚举了tags
,但错误地将列表中的最后一个值作为每个条目的值返回。
在我的情况下,如果标签是v1,v2,v3
,我得到:
gcloud container images list-tags gcr.io/${PROJECT}/${IMAGE}
--flatten="[].tags[]"
--format="value(tags)"
--filter="digest=${DIGEST}"
v3
v3
v3
我建议你在谷歌的Cloud SDK
问题跟踪器上提交一个错误
jq
如果你有jq
,也许:
gcloud container images list-tags gcr.io/${PROJECT}/${IMAGE}
--format=json |
jq -r '.[] | .digest as $D | .timestamp.datetime as $T | .tags[]| {"digest":$D,"tag":.,"timestamp":$T}'
或者:
gcloud container images list-tags gcr.io/${PROJECT}/${IMAGE}
--format=json |
jq -r '.[] | .digest as $D | .timestamp.datetime as $T | .tags[]| [$D,.,$T] | @csv'