我需要的是构建一个映像(作为 CI 产品)并仅在标签版本不在我们的私有 azure 托管 docker 注册表上时推送它。
按照这个stackoverflow答案,我尝试使用azure registery登录服务器复制bash脚本,但它似乎不支持完全相同的api(获得404)。如何通过带有 azure 容器注册表的 http/REST api 实现此“检查注册表中是否存在版本/标记”?(不使用内置的 az 工具)
我需要的是构建一个映像(作为 CI 产品)并仅在标签版本不在我们的私有 azure 托管 docker 注册表上时推送它。
按照这个stackoverflow答案,我尝试使用azure registery登录服务器复制bash脚本,但它似乎不支持完全相同的api(获得404)。如何通过带有 azure 容器注册表的 http/REST api 实现此“检查注册表中是否存在版本/标记”?(不使用内置的 az 工具)
如何通过带有 azure 容器注册表的 http/REST api 实现此“检查注册表中是否存在版本/标记”?
在 Azure 容器注册表中,我们应该使用Authorization: Basic
它来对其进行身份验证。
您可以使用 ACR 用户名和密码获取凭据,然后使用此脚本列出所有标签:
export registry="jasonacrr.azurecr.io"
export user="jasonacrr"
export password="t4AH+K86xxxxxxx2SMxxxxxzjNAMVOFb3c"
export operation="/v2/aci-helloworld/tags/list"
export credentials=$(echo -n "$user:$password" | base64 -w 0)
export catalog=$(curl -s -H "Authorization: Basic $credentials" https://$registry$operation)
echo "Catalog"
echo $catalog
输出如下:
[root@jasoncli jason]# echo $catalog
{"name":"aci-helloworld","tags":["v1","v2"]}
然后您可以使用 shell 来检查标签是否存在。
希望这可以帮助。
更新:
有关 Azure 容器注册表与 Azure AD 集成的更多信息,请参阅本文。