Automatyzacja budowania z CodeBuild i buildspec.yml

Automatyzacja wdrożeń na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Co robi CodeBuild?

  • CodeBuild to w pełni zarządzana usługa budowania
  • Brak serwerów do konfigurowania czy zarządzania
  • Uruchamia budowanie w tymczasowym kontenerze
  • Skaluje się automatycznie; płacisz tylko za minuty budowania
  • Integruje się z CodePipeline jako etap Build

 

1-codebuild-managed-service-temporary-container-lifecycle.png

Automatyzacja wdrożeń na AWS

Plik buildspec.yml

  • buildspec.yml: plik YAML w katalogu głównym kodu źródłowego
  • Określa, co robi CodeBuild podczas budowania
  • Cztery fazy wykonywane po kolei:
    • install: instalacja zależności i narzędzi
    • pre_build: zadania przygotowawcze przed budowaniem
    • build: kompilacja kodu, uruchamianie testów
    • post_build: pakowanie artefaktów, porządki

buildspec

Automatyzacja wdrożeń na AWS

Przykład rzeczywistego buildspec.yml

  • install: pip install -r requirements.txt
  • pre_build: [ -z "$DB_URL" ] && exit 1
  • build: pytest tests/
  • post_build: zip -r app.zip ., następnie echo "Build completed"

Edytor kodu w jasnym motywie z plikiem buildspec.yml zawierającym cztery fazy, gdzie build uruchamia testy pytest, a post_build pakuje kod do app.zip, który staje się artefaktem potoku

Automatyzacja wdrożeń na AWS

Konfiguracja środowiska budowania

 

4-codebuild-environment-config-compute-envvars-caching.png

  • Typy obliczeniowe: small, medium, large, 2xlarge
    • Wybierz zależnie od złożoności budowania i wymaganej szybkości
  • Zmienne środowiskowe: przekazują konfigurację do procesu budowania
    • Przechowuj dane wrażliwe w Parameter Store lub Secrets Manager
  • Buforowanie zależności: buforuje pobrane pakiety między budowaniami
    • Znacznie skraca czas budowania w dużych projektach
Automatyzacja wdrożeń na AWS

Artefakty wynikowe i integracja z potokiem

 

5-codebuild-artifact-output-s3-codepipeline-handoff.png

  • Sekcja artifacts definiuje, co zwraca CodeBuild
  • files: lista plików lub wzorców; base-directory: katalog główny
  • Wynikowy artefakt zapisywany w S3 i automatycznie przekazywany do kolejnego etapu
  • Błędne ścieżki artefaktów powodują błędy wdrożenia, nawet gdy budowanie się powiedzie
Automatyzacja wdrożeń na AWS

Cały łańcuch budowania, testowania i wdrażania

  • Deweloper wysyła kod do CodeCommit
  • CodePipeline uruchamia się automatycznie
  • CodeBuild: install -> pre_build -> build -> post_build
  • Artefakt budowania trafia do CodeDeploy
  • Aplikacja jest wdrażana w docelowym środowisku

6-full-cicd-chain-codecommit-codebuild-phases-codedeploy.png

Automatyzacja wdrożeń na AWS

Czas na praktykę!

Automatyzacja wdrożeń na AWS

Preparing Video For Download...