CodeBuild part 1 Flashcards
Когда использование сервиса CodeBuild является обязательным?
Если CodeBuild НЕ использован, то из чего состоит пайплайн?
Примеры проектов, которые
- нужно собирать (и во что их нужно собирать?)
- НЕ нужно собирать
Как общим словом называют первые и вторые проекты?
Оно необходимо только если нам есть что build’ить.
Если в проекте нечего собирать,
то сервис CodePipeline
НЕ нуждается в сервисе CodeBuild
Тогда сервису CodePipeline достаточно иметь 2 сервиса - CodeCommit и CodeDeploy
📤 Примеры проектов, которые НЕ нужно собирать
- HTML сайт
- CloudFormation YAML templates
- Terraform templates
- общим словом их называют “scripts”
📥 Примеры проектов, которые нужно собирать
- Java → Jar архив
- Python → ZIP архив
- что угодно → Docker image
- общим словом их называют “code”
Что такое input и output для сервиса CodeBuild?
Какими сервисами они могут быть представлены?
Какие pre-requisites накладываются на эти сервисы?
Какие сервисы могут выполнять дальнейшую обработку артефакта?
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
Что такое батч в CodeBuild?
Какие переменные окружения есть для батчей и билдов?
Откуда ещё может брать переменные окружения CodeBuild?
Что для этого нужно дополнительно настроить?
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
Что такое artifact encryption в CodeBuild?
Какие переменные окружения есть для этого?
CodeBuild может зашифровать построенный артефакт
Можно указать KMS ключ в переменной CODEBUILD_KMS_KEY_ID
Что такое timeouts в CodeBuild?
Для чего это полезно?
CodeBuild фича “timeouts” позволяет автоматически прервать сборку, если она занимает много времени
Полезно, если приложение долго собирается
Что такое Build Project по отношению к CodeBuild?
Build Project состоит из атрибутов, пояснить:
- Source Code
- Environment
- Build Commands
- Build Artifacts
Build Project - единица сервиса CodeBuild
(как Bucket - это единица сервиса S3)
- source code - где взять
- build environment - какой Docker Image использовать (ОС, предустановленный runtime)
- build commands - какие выполнять (обычно указаны в
buildspec.yaml
) - build artifact - куда отправлять
Как провести аналогии для Build Project и buildspec.yaml в Jenkins?
В 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
В файле buildspec.yaml кроме прочих есть секция phases
Каждая фаза включает в себя поля, пояснить
- run-as
- runtime-versions
- commands
- finally
-
run-as
(linux-specific имя пользователя, под которым выполняется команда) -
runtime-versions
(например,java:corretto11
) -
commands
(массив последовательных команд) -
finally
(массив последовательных команд, которые выполнятся в конце, независимо от того, произошла ли ошибка при выполнении commands)
CodeBuild
Какие сервисы нужны для реализации логирования?
CodeBuild умеет слать логи выполнения в S3, CloudWatch
CodeBuild
Какие сервисы нужны для реализации Alerting’а?
- Как организовать Alerting в email?
- Как организовать Alerting в Slack?
Во время (или после) выполнения build’а,
сервис CodeBuild
может слать alert’ы в EventBridge
Тогда CloudWatch Events
триггернёт SNS
или Lambda
- SNS
может отправить email
- Lambda
может написать в Slack