使用GCloud SDK CLI的GCR图像标记列表



我正在尝试获取我的私有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'

最新更新