0

我使用 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但这意味着我必须每十二小时更新一次我的秘密文件(或者无论该令牌持续多久)。无人机有没有办法自己执行身份验证过程?

4

1 回答 1

0

在执行 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 中的后续命令时,它使用从第一个命令获得的身份验证。

于 2017-01-19T05:06:23.767 回答