我们有一个 python docker 镜像,它需要构建/发布(CI/CD)到 AWS 容器注册表中。
目前 AWS 不支持使用 docker hub 私有(private)存储库运行 docker 任务,因此我们必须使用 ECR 而不是 docker hub。
我们的 CI/CD 管道使用 docker build 和 push 任务。 Docker 身份验证是通过 VSTS 项目中的服务端点完成的。
我们应该遵循几个步骤来为 ECR 设置 VSTS 服务端点。这需要执行 AWS CLI 命令(本地或云)以获取 docker 客户端登录的用户和密码,它看起来像;
aws ecr get-login --no-include-email
上面的命令输出一个带有用户名(AWS)和密码( token )的 docker login 命令。
这种方法的问题是访问 token 只会持续 12 小时。因此 CI/CD 任务需要每 12 小时更新一次服务端点,否则构建失败并出现未经授权的 token 异常。
我们还有其他选择是运行一些 shell 命令来执行 aws get-login 命令并在同一上下文中运行 docker build/push 命令。此选项需要将 aws cli 安装到构建代理中(我们使用的是公共(public) linux 代理)。
此外,shell 命令涉及带有环境/变量的笨拙任务配置。否则,我们将在构建步骤中公开 aws 应用程序 ID 和密码。
如果您使用 docker 和 AWS ecr 解决了 VSTS CI/CD 管道,您能否提出建议?
谢谢,马希
最佳答案
经过大量的研究、反复试验,我找到了自己问题的答案。
AWS 通过构建任务和服务终端节点为 VSTS 提供扩展。您需要使用帐号、应用程序 ID 和 key 来配置 AWS 服务终端节点。然后,在您的构建/发布定义中;
关于amazon-web-services - 单个 Docker 镜像从 VSTS 构建/发布定义推送到 AWS 弹性容器注册表 (ECR),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51363496/