以编程方式获取我刚刚推送的图像的图像 sha
Programmatically get the image sha of an image I just pushed
我有一个 github 操作可以构建 docker 图像并将其推送到我们的存储库。
docker build -t mySuperCoolTag --build-arg PIP_INDEX_URL=${{ secrets.PIP_INDEX_URL }} .
docker push mySuperCoolTag
根据我们的部署过程,我们获取最新镜像的 SHA,将其添加到我们的 yaml 文件中以供 K8s 读取和使用。
本来我误以为镜像的本地SHA被推送到repo是一样的,于是抓起来添加到文件中,像这样:
docker images --no-trunc --quiet mySuperCoolTag
dockerSHA=$(docker images --no-trunc --quiet mySuperCoolTag)
#replace the current SHA in the configuration with the latest SHA
sed -i -E "s/sha256:\w*/$dockerSHA/g" config-file.yaml
这最终不是我要找的 SHA。
docker push
确实 输出预期的 SHA,但我不太确定如何以编程方式获取 SHA 保存,让脚本读取输出并从中获取它在那里,但我希望有一种更简洁的方法来做到这一点。有什么想法吗?
最终改用此命令:
dockerSHA=$(docker inspect --format='{{index .RepoDigests 0}}' mySuperCoolTag | perl -wnE'say /sha256.*/g')
而且效果很好。
我有一个 github 操作可以构建 docker 图像并将其推送到我们的存储库。
docker build -t mySuperCoolTag --build-arg PIP_INDEX_URL=${{ secrets.PIP_INDEX_URL }} .
docker push mySuperCoolTag
根据我们的部署过程,我们获取最新镜像的 SHA,将其添加到我们的 yaml 文件中以供 K8s 读取和使用。
本来我误以为镜像的本地SHA被推送到repo是一样的,于是抓起来添加到文件中,像这样:
docker images --no-trunc --quiet mySuperCoolTag
dockerSHA=$(docker images --no-trunc --quiet mySuperCoolTag)
#replace the current SHA in the configuration with the latest SHA
sed -i -E "s/sha256:\w*/$dockerSHA/g" config-file.yaml
这最终不是我要找的 SHA。
docker push
确实 输出预期的 SHA,但我不太确定如何以编程方式获取 SHA 保存,让脚本读取输出并从中获取它在那里,但我希望有一种更简洁的方法来做到这一点。有什么想法吗?
最终改用此命令:
dockerSHA=$(docker inspect --format='{{index .RepoDigests 0}}' mySuperCoolTag | perl -wnE'say /sha256.*/g')
而且效果很好。