Middle
Čo sa deje po stiahnutí kódu GitLabom?
sobes.tech AI
Odpoveď od AI
Po tom, čo GitLab stiahne kód repozitára do pracovného adresára, začína vykonávanie CI/CD pipeline definovaného v súbore .gitlab-ci.yml.
- Analýza
.gitlab-ci.yml: GitLab Runner (alebo samotný GitLab, ak sa používa vstavané CI) načíta konfiguráciu zo.gitlab-ci.yml. Tento súbor popisuje fázy (stages) a úlohy (jobs) pipeline. - Inicializácia Runnera: Priradí sa dostupný GitLab Runner na vykonanie pipeline. Runner získa informácie o repozitári, commite, vetve a konfigurácii
.gitlab-ci.yml. - Vytvorenie prostredia na vykonávanie: Runner pripraví prostredie na vykonávanie úloh. To môže byť:
- Virtuálna stroj
- Kontajner (Docker, Kubernetes)
- Vyhradený server
- Shell
- Vykonávanie etáp (stages): Pipeline sa vykonáva postupne podľa etáp definovaných v
.gitlab-ci.yml. Úlohy v jednej etape môžu byť spustené paralelne. - Vykonávanie úloh (jobs): Vo vnútri každej etapy sa vykonávajú nakonfigurované úlohy. Úloha zahŕňa:
- Určenie obrazu alebo vykonávateľa (executor), ak nie je nastavené na úrovni pipeline alebo sekcie
variables. - Klonovanie repozitára (už je vykonané GitLabom, ale Runner môže spustiť
git fetchalebogit checkoutpre požadovaný stav). - Obnovenie cache (ak je nastavené) pre zrýchlenie zostavenia (napr. načítanie závislostí).
- Spustenie skriptov (
script): Toto je hlavný obsah úlohy, kde sa vykonávajú príkazy na zostavenie, testovanie, analýzu alebo nasadenie. - Nahranie artefaktov (ak je nakonfigurované): Výsledky úlohy (napríklad skompilované binárky, správy) sa ukladajú pre neskoršie použitie alebo nahranie.
- Uloženie cache (ak je nastavené) pre zrýchlenie budúcich spustení.
- Určenie obrazu alebo vykonávateľa (executor), ak nie je nastavené na úrovni pipeline alebo sekcie
- Oznámenie o stave: Runner odosiela stav vykonania každej úlohy (úspech, chyba, zrušenie) späť do GitLab. Používateľ vidí pokrok a výsledky na stránke pipeline.
- Prechod na ďalšiu etapu: Ak všetky úlohy v aktuálnej etape skončili úspešne (alebo je nastavené
allow_failure), začína ďalšia etapa. Ak úloha skončí chybou aallow_failurenie je nastavené, celý pipeline sa prerušuje. - Dokončenie pipeline: Po vykonaní všetkých etáp (alebo v prípade chyby) sa pipeline ukončí. Výsledky a artefakty sú dostupné cez webové rozhranie GitLab.
Príklad štruktúry .gitlab-ci.yml:
// Definujeme etapy vykonávania pipeline
stages:
- build
- test
- deploy
// Úloha na zostavenie v etape build
build_job:
stage: build
image: docker:latest // Používame Docker obraz
script:
- echo "Zostavujem aplikáciu..."
- docker build -t myapp:$CI_COMMIT_SHORT_SHA . // Zostavenie Docker obrazu
artifacts:
paths:
- myapp.tar // Uloženie artefaktu zostavenia
// Úloha na testovanie v etape test
test_job:
stage: test
image: python:3.9 // Používame Python obraz
script:
- echo "Spúšťam testy..."
- pip install -r requirements.txt
- pytest // Spustenie testov
needs: ["build_job"] // Závisí od úspešného ukončenia build_job
// Úloha na nasadenie v etape deploy
deploy_job:
stage: deploy
image: ubuntu:latest // Používame Ubuntu obraz
script:
- echo "Nasadzujem aplikáciu..."
- echo "Tu je skript na nasadenie..." // Skript na nasadenie
only: // Spúšťa sa iba pri commitoch na master alebo tagoch
- master
- tags
needs: ["test_job"] // Závisí od úspešného ukončenia test_job
Takže, sťahovanie kódu je len prvý krok, po ktorom nasleduje zložitý automatizovaný proces zostavenia, testovania a nasadenia založený na konfigurácii .gitlab-ci.yml.