我正在尝试使用任务定义来部署 ECS,并且我正在使用 ECR 将我的 docker 映像存储在 was 中。当我尝试使用共享运行程序登录 GitLab CI/CD 中的 ECR 时。我遇到错误。
image: docker:19.03.11
services:
- docker:dind
variables:
REPOSITORY_URL: <REPOSITORY_URL>
TASK_DEFINITION_NAME: <Task_Definition>
CLUSTER_NAME: <CLUSTER_NAME>
SERVICE_NAME: <SERVICE_NAME>
before_script:
- apk add --no-cache curl jq python py-pip
- pip install awscli
- aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
- aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
- aws configure set region $AWS_DEFAULT_REGION
- $(aws ecr get-login --no-include-email --region "${AWS_DEFAULT_REGION}")
- IMAGE_TAG="$(echo $CI_COMMIT_SHA | head -c 8)"
stages:
- build
- deploy
build:
stage: build
script:
- echo "Building image..."
- docker build -t $REPOSITORY_URL:latest .
- echo "Tagging image..."
- docker tag $REPOSITORY_URL:latest $REPOSITORY_URL:$IMAGE_TAG
- echo "Pushing image..."
- docker push $REPOSITORY_URL:latest
- docker push $REPOSITORY_URL:$IMAGE_TAG
您可以采用两种方法来访问私有注册表。两者都需要使用适当的身份验证信息设置 CI/CD 变量 DOCKER_AUTH_CONFIG。
每个作业:要配置一个作业来访问私有注册表,请将 DOCKER_AUTH_CONFIG 添加为 CI/CD 变量。 每个运行程序:要配置运行程序,使其所有作业都可以访问私有注册表,请将 DOCKER_AUTH_CONFIG 添加为运行程序配置中的环境变量。