CodePipeline Flashcards

1
Q

CodePipeline

Выполнять сборку и тестирование в рамках CodePipeline могут …
Выполнять деплоймент в рамках CodePipeline могут …

A

Build Server
- CodeBuild
- Jenkins с AWS плагином

Deploy Server
- CodeDeploy
- Beanstalk
- CloudFormation
- ECS, S3

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

CodePipeline
Автоматизация алёртинга - какие сервисы её обеспечивают?
На каком уровне можно отловить событие?
Куда и как можно слать alerts?
Как выполнить custom HTTP request в случае события?

Как делали автоматизацию раньше?

A
  • 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Из каких частей состоит CodePipeline?
Какие из них умеют выполняться параллельно?
Какой есть минимум для создания CodePipeline’а?
Какие конкретные примеры этих частей?

A
  • CodePipeline пайплайн - это последовательность Stages (фаз, этапов, стадий)
  • Каждый Stage состоит из множества Action Groups
  • Каждая Action Group состоит из множества Actions

ℹ️ Pipeline должен состоять минимум из двух stage’ей (Source / Build / Test / Deploy)
ℹ️ Actions в рамках своего Action Group могут выполняться параллельно или последовательно.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое CodePipeline Action Provider?
Какие примеры для каждого возможного Action’а?
Всего существует 6 возможных Action’ей
Что такое Stage Action Type?

A

Каждый 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Как построить CodePipeline полностью БЕЗ CodeBuild и CodeDeploy и CodeCommit?
Какой при этом есть pre-requisite для Jenkins?
Где можно развернуть Jenkins сервер? Как его можно масштабировать?

A

В качестве провайдеров для CodePipeline Action’ов
можно выбрать Github, Jenkins, CloudFormation и других

Jenkins должен иметь AWS плагин

Jenkins сервер можно развернуть в AWS - на EC2 instance.
Jenkins имеет master-node и worker-nodes (агенты).
Worker-nodes можно масштабировать в рамках ASG (в зависимости от нагрузки).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

CodePipeline
Что можно реализовать в Action’е “Invoke”?
Через какие сервисы его делают?

A

Можно в самом конце пайплайна запустить некое кастовое действие
- Сделать CNAME swap
- Сделать AMI

Через Lambda, Step Function

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

CodePipeline
Технически, что такое Hunan Approval?
Какой у него Stage, какой Action Provider?

В какой момент имеет смысл устанавливать этот Action?

A

В CodePipeline технически “Human Approval” - это такой тип Action’а
Такой Action может быть вложен в какой-то Stage
Action Provider для этого Action’а - это “Manual”

Смысл имеет ставить Human Approval
- перед мержем PR’а
- перед доставкой на PROD
- после доставки на pre-PROD

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Кто может выполнять Human Approval?

A

Выполнять Human Approval могут лишь user’ы с IAM managed policy AWSCodePipelineApproverAccess

Выполнять Human Approval могут лишь user’ы с IAM managed policy AWSCodePipelineApproverAccess:
- Action: codepipeline:GetPipeline*
- Action: codepipeline:PutApprovalResult

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Как уведомить пользователя о необходимости сделать Human Approval?

A

В качестве опции для Manual Approval можно указать SNS топик.

Тогда юзер получить email, когда придёт время делать Approval.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Как можно протестировать инфраструктуру на pre-PROD окружении через CodeBuild и CodeDeploy?
Какие режимы имеет CloudFormation и на какой стадии их использовать?

A

ВМЕСТО 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 окружения

How well did you know this?
1
Not at all
2
3
4
5
Perfectly