无人机 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 时,它使用从第一个命令获得的身份验证。