我使用Drone 0.4作为我的CI。在尝试从自托管私有注册表迁移到AWS的ECS / ECR时,在将.drone.yml中的这些图像作为组合服务引用时,我遇到了身份验证问题。
例如
build:
image: python:3.5
commands:
- some stuff
compose:
db:
image: <account_id>.dkr.ecr.us-east-1.amazonaws.com/reponame:latest
当无人机构建运行时,错误输出就像它应该说的那样
Authentication required
来自ecr。据我所知,当您对AWS ECR进行身份验证时,您可以使用类似aws-cli&#39; ecr get-login
的内容来为您提供临时密码。我知道我可以将其注入我的无人机秘密文件并在auth_config
中使用该值,但这意味着我必须更新我的秘密&#39;每十二小时提交一次(或者令牌持续多久)。有无人机可以自行执行身份验证过程吗?
答案 0 :(得分:0)
您可以在执行build / compose命令之前在同一个shell中运行authentication命令:
我们如何在使用docker的设置中执行此操作,我们将这个shell脚本部分放在Jenkins管道中(这个shell脚本可以使用或不使用Jenkins,您只需配置您的aws凭据):
`aws ecr get-login --region us-east-1`
${MAVEN_HOME}/bin/mvn clean package docker:build -DskipTests
docker tag -f ${DOCKER_REGISTRY}/c-server ${DOCKER_REGISTRY}/c-server:${RELEASE_VERSION
docker push ${DOCKER_REGISTRY}/c-server:${RELEASE_VERSION}
因此,在运行创建图像的maven命令或后续命令以在ECR中推送它时,它使用从第一个命令获得的身份验证。