mah*_*ndo 5 continuous-integration amazon-web-services docker azure-devops azure-pipelines
我们有一个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
经过大量的研究,试验和错误,我找到了自己问题的答案.
AWS通过构建任务和服务端点为VSTS提供扩展.您需要使用帐号,应用程序ID和密码配置AWS服务端点.然后,在您的构建/发布定义中;
使用开箱即用的docker build任务或shell/bash命令构建docker镜像(例如; docker build -t your:tag.)
然后添加另一个构建步骤以将映像推送到AWS注册表,为此您可以使用AWS扩展任务(Amazon Elastic Container Registry Push Image).每次运行此构建定义时,Amazon Elastic Container Registry Push Image构建任务都将生成令牌和登录docker客户端.您不必担心每12小时更新一次用户名/令牌,AWS扩展构建任务将为您执行此操作.
| 归档时间: |
|
| 查看次数: |
2201 次 |
| 最近记录: |