Автоматизація збірок з CodeBuild і buildspec.yml

Автоматизація розгортань в AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Що робить CodeBuild

  • CodeBuild — це повністю керований сервіс збірки
  • Не потрібно налаштовувати чи адмініструвати сервери
  • Запускає збірку у тимчасовому контейнері
  • Масштабується автоматично; платите лише за хвилини збірки
  • Інтегрується з CodePipeline як етап Build

 

Життєвий цикл тимчасового контейнера в керованому сервісі CodeBuild

Автоматизація розгортань в AWS

Файл buildspec.yml

  • buildspec.yml: файл YAML у корені вихідного коду
  • Визначає дії CodeBuild під час збірки
  • Чотири фази виконуються послідовно:
    • install: встановлення залежностей і інструментів
    • pre_build: підготовчі задачі перед збіркою
    • build: компіляція коду, запуск тестів
    • post_build: пакування артефактів, прибирання

buildspec

Автоматизація розгортань в AWS

Реальний приклад buildspec.yml

  • install: pip install -r requirements.txt
  • pre_build: [ -z "$DB_URL" ] && exit 1
  • build: pytest tests/
  • post_build: zip -r app.zip . потім echo "Build completed"

Редактор коду (світла тема) з buildspec.yml із чотирма фазами; у build запускаються pytest, а в post_build код пакується в app.zip, що виходить як артефакт конвеєра

Автоматизація розгортань в AWS

Конфігурація середовища збірки

 

Конфігурація середовища CodeBuild: обчислювальні ресурси, змінні середовища, кешування

  • Типи обчислень: small, medium, large, 2xlarge
    • Обирайте за складністю збірки та вимогами до швидкості
  • Змінні середовища: передавайте конфігурацію у збірки
    • Зберігайте секрети в Parameter Store або Secrets Manager
  • Кешування залежностей: кешуйте завантажені пакунки між збірками
    • Значно скорочує час збірки для великих проєктів
Автоматизація розгортань в AWS

Артефакти та інтеграція з конвеєром

 

Вивід артефактів CodeBuild до S3 і передавання в CodePipeline

  • Розділ artifacts визначає, що виводить CodeBuild
  • files: перелік файлів або шаблонів; base-directory: кореневий шлях
  • Вихідний артефакт зберігається в S3 і автоматично передається на наступний етап
  • Неправильні шляхи артефактів спричиняють збої деплою, навіть якщо збірка успішна
Автоматизація розгортань в AWS

Повний ланцюг build-test-deploy

  • Розробник пушить код до CodeCommit
  • CodePipeline спрацьовує автоматично
  • CodeBuild: install -> pre_build -> build -> post_build
  • Артефакт збірки переходить до CodeDeploy
  • Застосунок розгортається в цільове середовище

Повний ланцюг CI/CD: CodeCommit, фази CodeBuild, CodeDeploy

Автоматизація розгортань в AWS

Давайте потренуємось!

Автоматизація розгортань в AWS

Preparing Video For Download...