Middle
Co se děje poté, co GitLab stáhne kód?
sobes.tech AI
Odpověď od AI
Poté, co GitLab stáhne kód repozitáře do pracovního adresáře, začíná provádění CI/CD pipeline definované v souboru .gitlab-ci.yml.
- Analýza
.gitlab-ci.yml: GitLab Runner (nebo samotný GitLab, pokud je použit vestavěný CI) načte konfiguraci z.gitlab-ci.yml. Tento soubor popisuje fáze (stages) a úkoly (jobs) pipeline. - Inicializace Runnera: Přidělen je dostupný GitLab Runner pro provádění pipeline. Runner získá informace o repozitáři, commitu, větvi a konfiguraci
.gitlab-ci.yml. - Vytvoření prostředí pro běh: Runner připraví prostředí pro vykonávání úkolů. To může být:
- Virtuální stroj
- Kontejner (Docker, Kubernetes)
- Vyhrazený server
- Shell
- Vykonávání etap (stages): Pipeline se provádí postupně podle etap definovaných v
.gitlab-ci.yml. Úkoly v jedné etapě mohou být spuštěny paralelně. - Vykonávání úkolů (jobs): Uvnitř každé etapy jsou vykonávány nakonfigurované úkoly. Úkol zahrnuje:
- Určení obrazu nebo vykonavatele (executor), pokud není nastaven na úrovni pipeline nebo sekce
variables. - Klonování repozitáře (již provedeno GitLabem, ale Runner může spustit
git fetchnebogit checkoutpro požadovaný stav). - Obnovení cache (pokud je nakonfigurována) pro urychlení sestavení (například načítání závislostí).
- Spuštění skriptů (
script): To je hlavní obsah úkolu, kde jsou prováděny příkazy sestavení, testování, analýzy nebo nasazení. - Nahrání artefaktů (pokud je nakonfigurováno): Výsledky úkolu (například zkompilované binárky, zprávy) jsou uloženy pro pozdější použití nebo nahrání.
- Uložení cache (pokud je nakonfigurována) pro urychlení budoucích spuštění.
- Určení obrazu nebo vykonavatele (executor), pokud není nastaven na úrovni pipeline nebo sekce
- Zpráva o stavu: Runner odesílá stav provádění každého úkolu (úspěch, chyba, zrušení) zpět do GitLab. Uživatel vidí pokrok a výsledky na stránce pipeline.
- Přechod na další etapu: Pokud všechny úkoly v aktuální etapě skončily úspěšně (nebo je nastaven
allow_failure), začíná další etapa. Pokud úkol skončí chybou aallow_failurenení nastaven, je celá pipeline přerušena. - Dokončení pipeline: Po provedení všech etap (nebo v případě chyby) je pipeline ukončena. Výsledky a artefakty jsou dostupné přes webové rozhraní GitLab.
Příklad struktury .gitlab-ci.yml:
// Definujeme etapy pipeline
stages:
- build
- test
- deploy
// Úkol sestavení v etapě build
build_job:
stage: build
image: docker:latest // Použití Docker obrazu
script:
- echo "Sestavuji aplikaci..."
- docker build -t myapp:$CI_COMMIT_SHORT_SHA . // Sestavení Docker obrazu
artifacts:
paths:
- myapp.tar // Uložení artefaktu sestavení
// Úkol testování v etapě test
test_job:
stage: test
image: python:3.9 // Použití Python obrazu
script:
- echo "Spouštím testy..."
- pip install -r requirements.txt
- pytest // Spuštění testů
needs: ["build_job"] // Závisí na úspěšném dokončení build_job
// Úkol nasazení v etapě deploy
deploy_job:
stage: deploy
image: ubuntu:latest // Použití Ubuntu obrazu
script:
- echo "Nasazuji aplikaci..."
- echo "Nasazovací skript zde..." // Nasazovací skript
only: // Spouští se pouze při commitech na master nebo tagy
- master
- tags
needs: ["test_job"] // Závisí na úspěšném dokončení test_job
Tím je stahování kódu pouze prvním krokem, po kterém následuje složitý automatizovaný proces sestavení, testování a nasazení založený na konfiguraci .gitlab-ci.yml.