В данном примере рассмотрим создание репозитория в CodeCommit и сборку простого Docker образа при помощи CodeBuild и запушаем его в ECR.
Создадим в CodeCommit репозиторий. Имя моего репозитория — "artem-test"
Для того, чтобы работать с репозиторием убедитесь, что у вашего пользователя загружен SSH ключ. Если уже загружен, посмотрите его ID, он будет нужен.
Клонируем себе репозиторий:
git clone ssh://[email protected]/v1/repos/artem-test
Не забудьте поменять регион, в котором создан репозиторий.
Добавим в него для теста пример простого Dockerfile
Dockerfile:
FROM php:7.1-apache-jessie RUN apt update && \ apt install curl net-tools && \ apt-get clean CMD ["apache2-foreground"]
Для сборки будем использовать: buildspec.yml
buildspec.yml:
version: 0.2 env: variables: AWS_ACCOUNT_ID: "XXXXXXXXXXXX" AWS_DEFAULT_REGION: "us-east-1" IMAGE_REPO_NAME: "artem-test" IMAGE_TAG: "latest" phases: install: runtime-versions: docker: 18 pre_build: commands: - echo Logging in to Amazon ECR... - $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION) build: commands: - echo Build started on `date` - echo Building the Docker image... - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG . - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG post_build: commands: - echo Build completed on `date` - echo Pushing the Docker image... - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
Отправим локальные изменения на сервер:
git add . git commit -am "git init" git push
Создаем проект в CodeBuild, указав в качестве источника репозиторий в CodeCommit.
Дадим для CodeBuild права в ECR
Открываем IAM -> CodeBuild
Ищем "codebuild-artem-test-service-role"
И добавляем этой роли следующую Policy:
AmazonEC2ContainerRegistryPowerUser
Для вывода логов сборки переходим в сервис "CloudWatch" и создаем группу. Так же можно создать S3 Bucket для хранения архивов логов.
Можно пробовать собирать образ в CodeBuild.