无人机 0.4 上组合服务的 AWS ECR 身份验证
AWS ECR authentication for compose service on drone 0.4
我正在使用 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 的 ecr get-login
之类的东西,它会为您提供一个临时密码。我知道我可以将其注入我的无人机秘密文件并在 auth_config
中使用该值,但这意味着我必须每十二小时(或该令牌持续多长时间)更新一次我的秘密文件。有没有办法让无人机自己执行身份验证过程?
在执行 build/compose 命令之前,您可以在同一 shell 中 运行 身份验证命令:
我们如何在 docker 的设置中做到这一点,我们在 Jenkins 管道中有这个 shell 脚本部分(这个 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 时,它使用从第一个命令获得的身份验证。
我正在使用 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 的 ecr get-login
之类的东西,它会为您提供一个临时密码。我知道我可以将其注入我的无人机秘密文件并在 auth_config
中使用该值,但这意味着我必须每十二小时(或该令牌持续多长时间)更新一次我的秘密文件。有没有办法让无人机自己执行身份验证过程?
在执行 build/compose 命令之前,您可以在同一 shell 中 运行 身份验证命令:
我们如何在 docker 的设置中做到这一点,我们在 Jenkins 管道中有这个 shell 脚本部分(这个 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 时,它使用从第一个命令获得的身份验证。