AWS CodeBuild
AWS CodeBuild
W pelni zarzadzany serwis CI w chmurze AWS. Kompiluj kod, uruchamiaj testy i twórz gotowe artefakty - bez koniecznosci zarzadzania serwerami budowania.
AWS CodeBuild to w pelni zarzadzany serwis continuous integration, który kompiluje kod zrodlowy, uruchamia testy i tworzy gotowe do wdrozenia paczki. Nie musisz provisionowac, zarzadzac ani skalowac wlasnych serwerów budowania - CodeBuild automatycznie skaluje sie do potrzeb.
Definiujesz proces budowania w pliku buildspec.yml, wybierasz srodowisko (Docker), a CodeBuild zajmuje sie reszta. Obsluguje zrodla z GitHub, CodeCommit, Bitbucket, S3 i CodePipeline. Kazdy build dziala w izolowanym kontenerze, co gwarantuje powtarzalnosc i bezpieczenstwo.
CodeBuild obsluguje równolegle buildy (batch builds), co pozwala uruchomic wiele wariantów budowania jednoczesnie - np. testy na róznych wersjach Node.js, Pythona czy Javy w jednym PUSH. Mozesz tez uruchamiac buildy w VPC, co pozwala na dostep do prywatnych zasobów jak bazy danych RDS podczas testów integracyjnych.
Uzywaj cache S3 dla zaleznosci (node_modules, .m2, pip cache), aby drastycznie skrócic czas buildów. Pierwszy build pobiera wszystko, kolejne korzystaja z cache. Dla obrazów Docker uzyj opcji --cache-from, aby przyspieszyc budowanie warstw. W buildspec.yml zawsze definiuj sekcje cache z paths do katalogów zaleznosci.
AWS CodeBuild to w pelni zarzadzana usluga budowania kodu. Kompiluje zrodla, uruchamia testy i produkuje artefakty gotowe do wdrozenia. Ponizej opisujemy pelny cykl - od konfiguracji projektu po dostarczenie artefaktow.
Tworzenie Build Project
Build Project definiuje: nazwe projektu, opis, tagi i konfiguracje VPC (opcjonalnie - potrzebne gdy build musi laczyc sie z zasobami w prywatnej sieci, np. baza danych do testow integracyjnych). Projekt mozna tworzyc przez konsole, CLI, CloudFormation lub CDK. Kazdy projekt moze miec wiele buildow uruchomionych rownolegle - domyslny limit to 60 concurrent builds.
Konfiguracja zrodla (Source)
CodeBuild pobiera kod z: GitHub (przez OAuth lub personal access token), GitHub Enterprise, Bitbucket, AWS CodeCommit, S3 bucket lub bez zrodla (np. dla custom Docker buildow). Dla GitHub/Bitbucket mozesz skonfigurowac webhook - kazdy push lub pull request automatycznie triggeruje build. Ustawienia: branch, git clone depth (shallow clone = szybciej), git submodules, report build status do repo.
Definicja buildspec.yml
buildspec.yml to plik w katalogu glownym repozytorium definiujacy komendy buildu. Sklada sie z faz: install (instalacja zaleznosci, runtime versions), pre_build (login do ECR, pobranie parametrow), build (kompilacja, testy), post_build (push Docker image, notyfikacje). Kazda faza moze miec komendy run-as (zmiana usera) i on-failure (ABORT lub CONTINUE). Alternatywnie mozesz zdefiniowac komendy inline w konfiguracji projektu.
Konfiguracja srodowiska compute
Wybierz typ compute: Standard (x86_64), ARM (Graviton - do 40% tanszy), GPU (dla ML buildow). Rozmiary: small (3GB/2vCPU), medium (7GB/4vCPU), large (15GB/8vCPU), 2xlarge (145GB/72vCPU). Obraz budowania: managed images od AWS (Amazon Linux 2, Ubuntu) z preinstalowanymi runtimes lub custom Docker image z ECR. Custom image daje pelna kontrole nad srodowiskiem i szybsze buildy (bez install phase).
Wykonanie buildu
Przy starcie CodeBuild: pobiera kod zrodlowy, uruchamia Docker container z wybranym obrazem, wykonuje komendy z buildspec.yml faza po fazie. Kazda faza loguje output do CloudWatch Logs w czasie rzeczywistym. Zmienne srodowiskowe sa dostepne w kazdej fazie - definiujesz je w projekcie lub buildspec. Build zakonczy sie statusem SUCCEEDED, FAILED, STOPPED lub TIMED_OUT (domyslny timeout 60 minut).
Artefakty do S3
Po udanym buildzie CodeBuild uploaduje artefakty (ZIP, JAR, Docker image tag) do S3 bucket. Konfigurujesz: bucket, path, packaging (ZIP lub NONE), encryption (SSE-S3 lub KMS). Mozesz zdefiniowac secondary artifacts - np. glowny artefakt to JAR, a secondary to test reports. Dla Docker images uzywaj post_build phase do push do ECR zamiast S3. Artefakty sa wejsciem dla CodeDeploy lub kolejnego stage w CodePipeline.
Praktyczne wskazowki dotyczace efektywnego uzycia CodeBuild - od struktury buildspec.yml po optymalizacje czasu i kosztow budowania.
Struktura buildspec.yml - fazy i ich zastosowanie
install: wersje runtime (nodejs: 18, python: 3.11) i dodatkowe pakiety. pre_build: docker login do ECR, npm ci (zamiast npm install - szybszy i deterministyczny), pobranie secrets z Parameter Store. build: kompilacja, testy jednostkowe, analiza statyczna. post_build: docker push, upload dodatkowych artefaktow, notyfikacje Slack. Uzywaj finally w kazdej fazie do cleanup - wykonuje sie nawet gdy build fails.
PoczatkujacyLocal Mode - testuj buildspec lokalnie
CodeBuild Local Mode pozwala uruchomic build na Twojej maszynie deweloperskiej uzywajac tego samego Docker image co w chmurze. Zainstaluj codebuild-local agent z GitHuba AWS. Uruchom: ./codebuild_build.sh -i aws/codebuild/standard:7.0 -a ./output. To oszczedza czas i pieniadze - debugujesz buildspec lokalnie zamiast pushowac commit i czekac na wynik w chmurze. Local mode wspiera wiekszosc funkcji buildu poza VPC networking.
PoczatkujacyCaching - S3 i local cache
S3 caching zapisuje katalogi miedzy buildami (np. node_modules, .m2, pip cache) do S3 bucket. Pierwszy build jest wolny, kolejne laduja cache i sa szybsze o 30-60%. Local caching utrzymuje cache na maszynie buildu - szybszy niz S3, ale dostepny tylko jesli build trafi na ta sama maszyne. Tryby: source-cache (zrodla), docker-layer-cache (warstwy Docker), custom-cache (dowolne katalogi). Lacz S3 i local cache dla najlepszych wynikow.
ZaawansowanyCustom Docker images dla szybszych buildow
Domyslne managed images od AWS zawieraja wiele runtime i narzedzi - sa uniwersalne, ale duze. Stworz wlasny Docker image z dokladnie tym, czego potrzebujesz: base image (alpine/slim), Twoje runtime, narzedzia CI (eslint, pytest), pre-cached dependencies. Przechowuj w ECR. Custom image moze skrocic build z 5 minut do 1-2 minut eliminujac install phase. Aktualizuj image regularnie z patchy bezpieczenstwa.
ZaawansowanySecrets z Parameter Store i Secrets Manager
Nigdy nie hardcoduj credentials w buildspec.yml. Uzyj zmiennych srodowiskowych typu PARAMETER_STORE lub SECRETS_MANAGER - CodeBuild automatycznie pobierze wartosci przy starcie buildu. Przyklad: DB_PASSWORD = /codebuild/db-password (typ PARAMETER_STORE). Dla Docker login do ECR uzyj: aws ecr get-login-password w pre_build. IAM role projektu CodeBuild musi miec uprawnienia do odczytu tych parametrow.
PoczatkujacyBatch Builds - rownolegle budowanie
Batch builds pozwalaja uruchomic wiele buildow rownolegle z jednego triggera. Trzy trypy: build-list (lista niezaleznych buildow), build-graph (buildy z zaleznosciami - np. test po kompilacji), build-matrix (kombinacje zmiennych - np. Node 18 + Node 20 x Linux + ARM). Batch build raportuje jeden zbiorczy status. Uzywaj do: testowania na wielu platformach, budowania wielu mikroserwisow, rownoleglych testow integracyjnych.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS CodeBuild bezposrednio w konsoli AWS.
Do czego sluzy AWS CodeBuild?
Continuous Integration
Automatyczne budowanie i testowanie kodu przy kazdym PUSH do repozytorium. Szybki feedback dla developerów.
Budowanie obrazów Docker
Tworzenie obrazów kontenerowych i pushowanie ich do Amazon ECR jako czesc pipeline CI/CD.
Testy automatyczne
Uruchamianie unit testów, integration testów i testów bezpieczenstwa w izolowanym srodowisku.
Generowanie artefaktów
Kompilacja aplikacji, tworzenie paczek deploymentowych (ZIP, JAR, WAR) i przechowywanie ich w S3.
Co musisz wiedziec?
Build Project
Konfiguracja budowania - definiuje skad pobrac kod, jakie srodowisko uzyc, jak zbudowac i gdzie wyslac artefakty.
buildspec.yml
Plik YAML definiujacy fazy budowania: install, pre_build, build, post_build. Okresla komendy do wykonania w kazdej fazie.
Compute Type
Moc srodowiska budowania: BUILD_GENERAL1_SMALL (3 GB RAM), MEDIUM (7 GB), LARGE (15 GB), 2XLARGE (145 GB). Wiekszy = szybszy build.
Build Cache
Przyspieszenie buildów przez cache zaleznosci. Dwa tryby: S3 (wspoldzielony miedzy buildami) i Local (szybszy, ale per-instancja).
Source Provider
Zrodlo kodu: GitHub, GitHub Enterprise, Bitbucket, CodeCommit, S3 lub CodePipeline. Obsluguje webhooki do automatycznych buildów.
Build Badge
Dynamiczny obrazek pokazujacy status ostatniego buildu (passing/failing). Mozna umiescic w README repozytorium.
Architektura: CI Pipeline z CodeBuild
Typowa architektura CI z CodeBuild jako centralnym elementem budowania. Kod z GitHub jest buildowany, testowany, a artefakty trafiaja do ECR (Docker images) i S3 (pakiety), z logami w CloudWatch.
Ile kosztuje AWS CodeBuild?
Pay-per-minute
Placisz za kazda minute budowania, zaokraglona w góre. Cena zalezy od wybranego compute type.
BUILD_GENERAL1_SMALL: $0.005/min (~$0.30/godz.)
Compute Types
Im wieksze srodowisko, tym wyzsza cena za minute, ale szybsze buildy moga byc tansze w sumie.
BUILD_GENERAL1_LARGE: $0.02/min (~$1.20/godz.)
Free Tier
100 minut budowania miesiecznie na BUILD_GENERAL1_SMALL przez caly czas (nie tylko 12 mies.).
Wystarczy na kilkadziesiat malych buildów miesiecznie
Przyklady AWS CLI
Utwórz projekt budowania
Tworzy nowy build project z GitHub jako zródlem
aws codebuild create-project \
--name moja-aplikacja \
--source type=GITHUB,location=https://github.com/user/repo.git \
--artifacts type=S3,location=moj-bucket-artefaktow \
--environment type=LINUX_CONTAINER,computeType=BUILD_GENERAL1_SMALL,image=aws/codebuild/amazonlinux2-x86_64-standard:5.0
Uruchom build
Startuje budowanie projektu z opcjonalnym nadpisaniem wersji zródla
aws codebuild start-build \
--project-name moja-aplikacja \
--source-version main
Sprawdz status buildu
Pobiera szczególy i status konkretnego buildu
aws codebuild batch-get-builds \
--ids moja-aplikacja:build-id-123 \
--query 'builds[0].{Status:buildStatus,Phase:currentPhase,Start:startTime}' \
--output table
Lista projektów
Wyswietla wszystkie projekty CodeBuild na koncie
aws codebuild list-projects --sort-by NAME --sort-order ASCENDING
Quiz: AWS CodeBuild
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. W jakim pliku definiujesz kroki budowania w CodeBuild?
2. Ile minut budowania miesiecznie oferuje Free Tier CodeBuild?
3. Które zrodlo kodu NIE jest obslugiwane przez CodeBuild?
4. Kazdy build w CodeBuild dziala w:
Czesto uzywane razem z AWS CodeBuild
Chcesz poznac AWS CodeBuild w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS CodeBuild krok po kroku. Teoria + praktyka od zera.