CodeBuild part 1 Flashcards

1
Q

Когда использование сервиса CodeBuild является обязательным?

Если CodeBuild НЕ использован, то из чего состоит пайплайн?

Примеры проектов, которые
- нужно собирать (и во что их нужно собирать?)
- НЕ нужно собирать
Как общим словом называют первые и вторые проекты?

A

Оно необходимо только если нам есть что build’ить.
Если в проекте нечего собирать,
то сервис CodePipeline НЕ нуждается в сервисе CodeBuild

Тогда сервису CodePipeline достаточно иметь 2 сервиса - CodeCommit и CodeDeploy

📤 Примеры проектов, которые НЕ нужно собирать
- HTML сайт
- CloudFormation YAML templates
- Terraform templates
- общим словом их называют “scripts”

📥 Примеры проектов, которые нужно собирать
- Java → Jar архив
- Python → ZIP архив
- что угодно → Docker image
- общим словом их называют “code”

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

Что такое input и output для сервиса CodeBuild?
Какими сервисами они могут быть представлены?
Какие pre-requisites накладываются на эти сервисы?
Какие сервисы могут выполнять дальнейшую обработку артефакта?

A

Input (Code Source) - источник данных (код приложения) для CodeBuild
Это может быть S3 bucket или CodeCommit Repository
Ещё GitHub, Bitbucket

Output - место, куда CodeBuild отправит построенный артефакт
Это может быть ТОЛЬКО S3 bucket
Оттуда артефакт может быть выкачен сервисом CodeDeploy (или сервером Jenkins)

ℹ️ Jenkins с AWS-плагином может быть использован вместо сервиса CodeDeploy

Pre-requisites для S3
☝🏻 Input и Output бакеты должны
- быть в том же регионе, где наш build project
- иметь активированный versioning

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

Что такое батч в CodeBuild?
Какие переменные окружения есть для батчей и билдов?
Откуда ещё может брать переменные окружения CodeBuild?
Что для этого нужно дополнительно настроить?

A

CodeBuild может выполнять Single (единичный) build.
А может - Batch (целую пачку) билдов одновременно.

  • CODEBUILD_BATCH_BUILD_IDENTIFIER
  • CODEBUILD_BUILD_ARN

CodeBuild может динамически брать любые переменные окружения из SSM Parameter Store, Secrets Manager

CodeBuild - полностью managed service - автоматически из коробки поддерживает
- scaling
- parallel builds

Ничего дополнительно делать не нужно
- Нет никаких ~~CodeBuild AutoScaling Groups~~
- Нет никаких ~~CodeBuild AutoScaling~~
- Не нужно выбирать никакие ~~high-performance instances~~ для CodeBuild

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

Что такое artifact encryption в CodeBuild?
Какие переменные окружения есть для этого?

A

CodeBuild может зашифровать построенный артефакт
Можно указать KMS ключ в переменной CODEBUILD_KMS_KEY_ID

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

Что такое timeouts в CodeBuild?
Для чего это полезно?

A

CodeBuild фича “timeouts” позволяет автоматически прервать сборку, если она занимает много времени

Полезно, если приложение долго собирается

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

Что такое Build Project по отношению к CodeBuild?
Build Project состоит из атрибутов, пояснить:
- Source Code
- Environment
- Build Commands
- Build Artifacts

A

Build Project - единица сервиса CodeBuild
(как Bucket - это единица сервиса S3)

  • source code - где взять
  • build environment - какой Docker Image использовать (ОС, предустановленный runtime)
  • build commands - какие выполнять (обычно указаны в buildspec.yaml)
  • build artifact - куда отправлять
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как провести аналогии для Build Project и buildspec.yaml в Jenkins?

A

В Jenkins
- создаём Ci/CD pipeline через UI, указываем ссылку на source code и path к Jenkinsfile
- создаём Jenkinsfile, который содержит Stages

В CodeBuild
- создаём Build Project через UI, указываем ссылку на Source Code, Environment, Build Artifacts, Build Commands (ссылку на buildspec.yaml)
- создаём buildspec.yaml, который содержит Stages

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

В файле buildspec.yaml кроме прочих есть секция phases
Каждая фаза включает в себя поля, пояснить
- run-as
- runtime-versions
- commands
- finally

A
  • run-as (linux-specific имя пользователя, под которым выполняется команда)
  • runtime-versions (например, java:corretto11)
  • commands (массив последовательных команд)
  • finally (массив последовательных команд, которые выполнятся в конце, независимо от того, произошла ли ошибка при выполнении commands)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

CodeBuild
Какие сервисы нужны для реализации логирования?

A

CodeBuild умеет слать логи выполнения в S3, CloudWatch

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

CodeBuild
Какие сервисы нужны для реализации Alerting’а?
- Как организовать Alerting в email?
- Как организовать Alerting в Slack?

A

Во время (или после) выполнения build’а,
сервис CodeBuild может слать alert’ы в EventBridge

Тогда CloudWatch Events триггернёт SNS или Lambda
- SNS может отправить email
- Lambda может написать в Slack

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