3

我需要的是构建一个映像(作为 CI 产品)并仅在标签版本不在我们的私有 azure 托管 docker 注册表上时推送它。

按照这个stackoverflow答案,我尝试使用azure registery登录服务器复制bash脚本,但它似乎不支持完全相同的api(获得404)。如何通过带有 azure 容器注册表的 http/REST api 实现此“检查注册表中是否存在版本/标记”?(不使用内置的 az 工具)

4

1 回答 1

3

如何通过带有 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 集成的更多信息,请参阅本文

于 2018-04-03T10:10:27.253 回答