CodeBuild part 2 Flashcards
Автоматический запуск CodeBuild
Когда он происходит, если код в CodeCommit?
С помощью каких сервисов и в каком порядке он устроен?
А что если код в GitHub?
Когда developer мержит/пушит код в ветку.
1) CodeCommit выпускает новый event в EventBridge
2) EventBridge отлавливает этот event и запускает CodeBuild
3) CodeBuild стягивает новую версию кода
4) CodeBuild выполняет testing и quality checks
5) CodeBuild добавляет комментарий в code review
Вместо первого пункта (выпуск нового event’а в EventBridge), Github триггернёт CodeBuild через WebHook
Как отладить buildspec.yaml?
Как технически это реализовать?
Как buildspec.yaml НЕВОЗМОЖНО отладить?
Как можно, но НЕ нужно отлаживать buildspec.yaml?
✅ Запустить CodeBuild агента на локальном компьютере → выполнить buildspec.yaml
Агент скачивается из ECR в виде Docker Image и запускается на локали.
❌ НЕЛЬЗЯ выполнить SSH вход на CodeBuild docker container (как на RDS instance)
❗️ Использовать LocalStack для отладки buildspec.yaml - это overkill.
LocalStack - технология, которая позволяет локально отлаживать большинство сервисов AWS.
Где в сети по-умолчанию развёрнут CodeBuild контейнер?
Как это можно изменить?
Для чего?
- По-умолчанию CodeBuild контейнеры развёрнуты ВНЕ
VPC
- Если нужно дать
CodeBuild
’у доступ к ресурсам вVPC
, то можно указать дляCodeBuild
- VPC ID
- Subnet
- Security Groups
ℹ️ Use Case: интеграционные тесты, реализованные в CodeBuild
test фазе
Service Role
Что это такое в контексте Ci/CD Developer Tools?
Для чего она нужна? Что она включает?
Какие сервисы могут в ней нуждаться?
CodeBuild или CodePipeline
может выступать действующим лицом.
И нуждаться в IAM правах для
- скачивания кода из CodeCommit
- чтения параметров из SSM Parameter Store
- загрузки артефактов в S3
бакет
- писать логи в CloudWatch Logs
Тогда CodeBuild должен иметь Service Role
с соответствующими правами.
Проблема: долгая BUILD фаза
В чём может быть причина?
Как решать проблему?
Зависимости могут долго устанавливаться во время BUILD
фазы.
Причина: долго стягиваются из удалённого Ivy
/ Maven
репозитория
Решение
Можно “закэшировать” dependencies в S3
Проблема: долгая DEPLOY фаза
В чём может быть причина?
Как решать проблему?
Причина может быть в том, что DEPLOY фаза включает в себя
- скачивание исходного кода на сервер
- установку зависимостей на сервер
Решение
Делать установку зависимостей во время фазы BUILD
, а НЕ во время фазы DEPLOY