我们有一个python docker镜像需要在AWS容器注册表中构建/发布(CI/CD).目前AWS不支持使用docker hub私有存储库运行docker任务,因此我们必须使用ECR而不是docker hub.
我们的CI/CD管道使用docker构建和推送任务.Docker身份验证通过VSTS项目中的服务端点完成.
为ECR设置VSTS服务端点时,我们应该遵循几个步骤.这需要执行AWS CLI命令(本地或云)以获取docker客户端登录的用户和密码,它看起来像;
aws ecr get-login --no-include-email
Run Code Online (Sandbox Code Playgroud)
上面的命令输出一个docker login命令,其中包含用户名(AWS)和密码(令牌).
这种方法的问题是访问令牌将持续12个小时.因此,CI/CD任务需要每12小时更新一次服务端点,否则构建将因未经授权的令牌异常而失败.
我们的其他选择是运行一些shell命令来执行aws get-login命令并在同一个上下文中运行docker build/push命令.此选项需要将aws cli安装到构建代理程序中(我们使用的是公共Linux代理程序).另外,shell命令涉及使用环境/变量进行笨拙的任务配置.否则,我们将在构建步骤中公开aws应用程序ID和秘密.
如果您使用带有AWS ecr的docker解决了VSTS CI/CD管道,请指点一下吗?
谢谢,Mahi
continuous-integration amazon-web-services docker azure-devops azure-pipelines