Ci/CD CodeCommit, CodePipeline, CodeBuild Flashcards
В чём разница между CodeBuild и CodeDeploy?
Как они связаны?
Какими технологиями обычно представлены вне AWS?
AWS предлагает выделять отдельные 2 сервера для
1. сборки и тестирования проекта
- называется Build Server
- AWS CodeBuild
2. доставки проекта на удалённые сервера
- называется Deployment Server
- AWS CodeDeploy
CodePipeline = связать в единую последовательность
сервисы CodeCommit, CodeBuild, CodeDeploy
- CodeBuild = Jenkins Ci (build, test, lint)
- CodeDeploy = Jenkins CD (deploy)
Как организована Authorization/Authentication при работе с кодом в CodeCommit?
Какие способы авторизации доступны?
- Авторизация через
IAM
- Аутентификация через
IAM
(права доступа в IAM Role)
SSH и HTTPS - оба способа доступны в CodeCommit
Какие фичи Security есть в CodeCommit (кроме auth через IAM)?
- Приватный Git репозиторий, т.к. код живёт в
VPC
- Encryption (шифрование кода)
- at rest (в репозитории через
KMS
) - in transit (пушим код по HTTPS или SSH)
- at rest (в репозитории через
Какие CLI команды есть в CodeCommit?
CodeCommit полностью совместим с обычными git командами для push/pull кода.
Что может быть источником кода для CodePipeline (для CodeBuild)?
CodeCommit
-
ECR
(docker image с кодом приложения) S3
- Bitbucket
- GitHub
Какой сервис может выполнять сборку и тестирование в рамках CodePipeline?
CodeBuild
- Jenkins
Выполнять деплоймент в рамках CodePipeline могут …
CodeDeploy
Elastic Beanstalk
CloudFormation
ECS
S3
- Сервисы
CodeCommit
,CodeBuild
,CodeDeploy
могут … IAM права доступа …. - Вместо этого сервис … передаёт … от одного сервиса к другому через …
НЕ иметь
друг к другуCodePipeline
промежуточный артефакт (код приложения) S3
В чём может быть причина не работоспособности Ci/CD пайплайна в AWS?
- Именно
CodePipeline
является активным действующим лицом в Ci/CD.
Если что-то НЕ получается сделать, то значитCodePipeline
имеет НЕ достаточно Policies в своей IAM Service Role. - Можно проверить логи и визуальную информацию в
CodePipeline
AWS Console - Можно проверить AWS
CloudTrail
на предмет failed AWS API вызовов
Как можно реализовать email alerting в случае провала Ci/CD пайплайна?
-
CodePipeline
может слать event’ы вEventBridge
- Например, когда Ci/CD pipeline failed
- Так мы можем получить email
Из каких сущностей состоит CodePipeline?
Как они вложены друг в друга?
Как они выполняются: параллельно?
-
CodePipeline
пайплайн - это последовательностьStages
(фаз, этапов, стадий) - Каждый
Stage
состоит из множестваAction Groups
- Каждый
Action Group
состоит из множестваActions
Actions в рамках своего Action Group могут выполняться параллельно или последовательно.
Что может быть источником кода для CodePipeline (для CodeBuild)?
CodeCommit
-
ECR
(docker image с кодом приложения) S3
- Bitbucket
- GitHub
Как определяются инструкции для CodeBuild?
- руками через AWS Console
- в виде кода
buildspec.yaml
в корне проекта
buildspec.yaml - это аналог Jenkinsfile (а именно - его Ci части)
Как можно передавать артефакт (код, Docker Image) между CodeCommit и CodeBuild? Между CodeBuild и CodeDeploy?
Через S3
Как CodeBuild связан с VPC? Какие use-cases?
- По-умолчанию CodeBuild контейнеры развёрнуты ВНЕ
VPC
- Если нам нужно дать
CodeBuild
’у доступ к ресурсам вVPC
,
то можно указать дляCodeBuild
нужные VPC ID, Subnet, Security Groups
Use Case: интеграционные тесты, реализованные в CodeBuild test фазе