CodePipeline Flashcards
CodePipeline
Выполнять сборку и тестирование в рамках CodePipeline могут …
Выполнять деплоймент в рамках CodePipeline могут …
Build Server
- CodeBuild
- Jenkins с AWS плагином
Deploy Server
- CodeDeploy
- Beanstalk
- CloudFormation
- ECS, S3
CodePipeline
Автоматизация алёртинга - какие сервисы её обеспечивают?
На каком уровне можно отловить событие?
Куда и как можно слать alerts?
Как выполнить custom HTTP request в случае события?
Как делали автоматизацию раньше?
-
EventBridge
может мониторить события- CodePipeline Pipeline’а целиком
- CodePipeline Stage’а
- CodePipeline Action’а
-
EventBridge
может триггерить-
Lambda
(для Slack нотификации) -
SNS
(для отправки email’а) - Lambda (для отправки HTTP request to custom API)
-
Пару лет назад НЕ было возможности
использовать EventBridge
для автоматических запусков CodePipeline
’а
после commit’а в репозиторий.
😵 Вместо этого была опция заставлять CodePipeline
каждые 5 минут стягивать (poll) код из репозитория.
Это устаревшая стратегия. Сейчас нужно использовать EventBridge
, чтобы всё было event-driven.
Из каких частей состоит CodePipeline?
Какие из них умеют выполняться параллельно?
Какой есть минимум для создания CodePipeline’а?
Какие конкретные примеры этих частей?
-
CodePipeline
пайплайн - это последовательностьStages
(фаз, этапов, стадий) - Каждый
Stage
состоит из множестваAction Groups
- Каждая
Action Group
состоит из множестваActions
ℹ️ Pipeline должен состоять минимум из двух stage’ей (Source / Build / Test / Deploy)
ℹ️ Actions
в рамках своего Action Group
могут выполняться параллельно или последовательно.
Что такое CodePipeline Action Provider?
Какие примеры для каждого возможного Action’а?
Всего существует 6 возможных Action’ей
Что такое Stage Action Type?
Каждый CodePipeline Action имеет своего Provider’а.
Например, Action “Source” имеет в качестве провайдера S3 или CodeCommit
Каждый Action также имеет свой Action Type
Каждый Stage включает в себя Action Groups
Action Group имеет несколько Actions
Каждый Action имеет Type (“Source”, “Test”) и Provider
- Action “Source” - Providers: S3, CodeCommit, ECR, Github
- Action “Build” и “Test” - Providers: Jenkins, CodeBuild
- Action “Deploy” - Providers: CodeDeploy, CloudFormation, Beanstalk, S3, ECS
- Action “Approval” - Provider: Manual
- Action “Invoke” - Provider: Lambda, Step Function
Как построить CodePipeline полностью БЕЗ CodeBuild и CodeDeploy и CodeCommit?
Какой при этом есть pre-requisite для Jenkins?
Где можно развернуть Jenkins сервер? Как его можно масштабировать?
В качестве провайдеров для CodePipeline Action’ов
можно выбрать Github, Jenkins, CloudFormation и других
Jenkins должен иметь AWS плагин
Jenkins сервер можно развернуть в AWS - на EC2 instance.
Jenkins имеет master-node и worker-nodes (агенты).
Worker-nodes можно масштабировать в рамках ASG (в зависимости от нагрузки).
CodePipeline
Что можно реализовать в Action’е “Invoke”?
Через какие сервисы его делают?
Можно в самом конце пайплайна запустить некое кастовое действие
- Сделать CNAME swap
- Сделать AMI
Через Lambda, Step Function
CodePipeline
Технически, что такое Hunan Approval?
Какой у него Stage, какой Action Provider?
В какой момент имеет смысл устанавливать этот Action?
В CodePipeline технически “Human Approval” - это такой тип Action’а
Такой Action может быть вложен в какой-то Stage
Action Provider для этого Action’а - это “Manual”
Смысл имеет ставить Human Approval
- перед мержем PR’а
- перед доставкой на PROD
- после доставки на pre-PROD
Кто может выполнять Human Approval?
Выполнять Human Approval могут лишь user’ы с IAM managed policy AWSCodePipelineApproverAccess
Выполнять Human Approval могут лишь user’ы с IAM managed policy AWSCodePipelineApproverAccess:
- Action
: codepipeline:GetPipeline*
- Action
: codepipeline:PutApprovalResult
Как уведомить пользователя о необходимости сделать Human Approval?
В качестве опции для Manual Approval
можно указать SNS
топик.
Тогда юзер получить email, когда придёт время делать Approval.
Как можно протестировать инфраструктуру на pre-PROD окружении через CodeBuild и CodeDeploy?
Какие режимы имеет CloudFormation и на какой стадии их использовать?
ВМЕСТО CodeDeploy можно использовать CloudFormation
CodeBuild при этом используется как обычно
1) CloudFormation срабатывает в режиме CREATE_UPDATE для pre-prod окружения
Таким образом создаётся инфраструктура (ASG + ALB)
2) CodeBuild выполняет Action “test”, отправляя запросы на ALB
3) CloudFormation срабатывает в режиме DELETE_ONLY для pre-prod окружения
4) CloudFormation срабатывает в режиме CREATE_UPDATE для PROD окружения