AWS CodeBuild
CI/CD Developer Associate DevOps Engineer Professional Solutions Architect Associate

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.

Czy wiesz, ze...

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.

Pro Tip

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.

1

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.

2

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.

3

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.

4

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).

5

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).

6

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.

Poczatkujacy

Local 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.

Poczatkujacy

Caching - 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.

Zaawansowany

Custom 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.

Zaawansowany

Secrets 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.

Poczatkujacy

Batch 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.

Zaawansowany

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS CodeBuild bezposrednio w konsoli AWS.

Do czego sluzy AWS CodeBuild?

01

Continuous Integration

Automatyczne budowanie i testowanie kodu przy kazdym PUSH do repozytorium. Szybki feedback dla developerów.

02

Budowanie obrazów Docker

Tworzenie obrazów kontenerowych i pushowanie ich do Amazon ECR jako czesc pipeline CI/CD.

03

Testy automatyczne

Uruchamianie unit testów, integration testów i testów bezpieczenstwa w izolowanym srodowisku.

04

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.

GitHub Repository
GitHub Repository Kod zrodlowy z webhookiem triggerujacym build przy push/PR
Source pull
AWS CodeBuild
AWS CodeBuild Kompilacja, testy, budowanie Docker images wedlug buildspec.yml
Docker push
Amazon ECR
Amazon ECR Rejestr Docker images - push po udanym buildzie
Upload artefaktow
Amazon S3 (Artifacts)
Amazon S3 (Artifacts) Przechowywanie artefaktow buildu: ZIP, JAR, pakiety npm
Build logs
CloudWatch Logs
CloudWatch Logs Logi buildu w czasie rzeczywistym, metryki czasu i statusu
Skonfiguruj webhook z filtrami (np. tylko branch main i tagi release/*) - bez filtrow kazdy push na dowolny branch triggeruje build i generuje koszty.
Uzywaj S3 caching z lifecycle policy (np. usuwanie cache starszego niz 7 dni) - stary cache moze powodowac problemy z kompatybilnoscia zaleznosci.
Dla buildow wymagajacych dostepu do zasobow w VPC (np. baza testowa) skonfiguruj CodeBuild VPC access - pamietaj o NAT Gateway dla dostepu do internetu z prywatnego subnetu.

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.

Twoj wynik: 0 / 4

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:

Chcesz poznac AWS CodeBuild w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS CodeBuild krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy