Sobes.tech
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.

  1. 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.
  2. 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.
  3. 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
  4. 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.
  5. 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 fetch alebo git checkout pre 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í.
  6. 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.
  7. 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 a allow_failure nie je nastavené, celý pipeline sa prerušuje.
  8. 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.