Вот файл buildspec.yml, который я использовал в одном проекте для сборки и передачи образа Docker в ECR :
version: 0.2
phases:
pre_build:
commands:
- $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
- COMMIT_HASH="$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)"
- IMAGE_TAG="${COMMIT_HASH:=latest}"
- printenv
build:
commands:
- docker build -f infrastructure/Dockerfile -t $REPOSITORY_URI:latest .
- docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
post_build:
commands:
- docker push $REPOSITORY_URI:latest
- docker push $REPOSITORY_URI:$IMAGE_TAG
- export IMAGE_NAME='projectName'
- export IMAGE_URI=$REPOSITORY_URI:$IMAGE_TAG
- "printf '[{\"name\":\"%s\",\"imageUri\":\"%s\"}]' \"$IMAGE_NAME\" \"$IMAGE_URI\" > imagedefinitions.json"
artifacts:
files:
- imagedefinitions.json
Надеюсь, это поможет вам начать работу.Вам, очевидно, нужно будет изменить его для своих нужд.Проверьте синтаксис buildspec , если вы хотите добавить больше фаз.
Я использую образ aws/codebuild/docker:17.09.0
для проекта CodeBuild.Я передаю переменную окружения $REPOSITORY_URI
из моей CodePipeline.Это выглядит примерно так: 123456789012.dkr.ecr.us-east-1.amazonaws.com/projectName
.
imagedefinitions.json затем используется на более поздних этапах CodePipeline для развертывания изображения в Fargate.