Sobes.tech
Junior

Čo sa deje po stiahnutí kódu GitLabom?

sobes.tech AI

Odpoveď od AI

Po stiahnutí kódu (klonovaní repozitára), GitLab CI/CD vykonáva pipeline — súbor úloh (jobs) a etáp (stages), definovaných v súbore .gitlab-ci.yml v koreňovom adresári repozitára.

Hlavné etapy typického pipeline po stiahnutí kódu:

  1. Stages: Pipeline sa delí na etapy, ktoré sa vykonávajú postupne. Úlohy v jednej etape môžu byť vykonávané paralelne.
  2. Jobs: Každá úloha sa vykonáva v samostatnom Runneri. Runner je agent, ktorý preberá prácu z GitLab CI/CD a vykonáva ju.
  3. Commands: Vo vnútri každej úlohy sa vykonávajú príkazy uvedené v sekcii script v .gitlab-ci.yml. Tieto príkazy môžu zahŕňať:
    • Skladanie projektu (napríklad kompilácia kódu, balenie artefaktov).
    • Spustenie testov (unit testy, integračné testy a pod.).
    • Kontrola kvality kódu (linting, statická analýza).
    • Vytváranie Docker obrazov.
    • Nasadenie (deployment) do testovacieho, staging alebo produkčného prostredia.
    • Iné potrebné akcie.
  4. Dependencies (Závislosti): Úlohy môžu závisieť od výsledkov predchádzajúcich úloh, využívajúc kľúčové slovo needs.
  5. Artifacts (Artefakty): Výsledky vykonávania úloh (napríklad skompilovaný kód, správy o testoch, Docker obrazy) môžu byť uložené ako artefakty, ktoré sú dostupné na stiahnutie alebo sa používajú v následných úlohách.
  6. Caching (Cacheovanie): Závislosti alebo dočasné súbory môžu byť cacheované medzi spusteniami úloh na zrýchlenie vykonávania.
  7. Reporting (Správy): Výsledky vykonávania (úspech/neúspech), logy a artefakty sú dostupné v rozhraní GitLab.

Príkladná štruktúra .gitlab-ci.yml:

stages: # Definovanie etáp
  - build
  - test
  - deploy

build_job: # Definovanie úlohy
  stage: build # Príslušnosť k etape
  script: # Príkazy na vykonanie
    - echo "Building the project..."
    - mvn package # Príklad príkazu na build s Mavenom
  artifacts: # Uloženie artefaktov
    paths:
      - target/*.jar

test_job:
  stage: test
  script:
    - echo "Running tests..."
    - mvn test # Príklad príkazu na spustenie testov
  needs: # Závislosť od predchádzajúcej úlohy
    - build_job

deploy_job:
  stage: deploy
  script:
    - echo "Deploying the application..."
    - docker build -t my-app . # Príklad vytvorenia Docker obrazu
    - docker push my-app # Príklad odoslania obrazu do repozitára
  only: # Podmienka na vykonanie úlohy
    - main # Len pri commite do vetvy main

Takže, po stiahnutí kódu, GitLab CI/CD orchestruje vykonanie určeného pracovného procesu, zameraného na zostavenie, testovanie a nasadenie aplikácie.