Sobes.tech
Middle

Čo sa stane po tom, čo GitLab dostane kód?

sobes.tech AI

Odpoveď od AI

GitLab, po obdržaní kódu (zvyčajne cez git push), spúšťa proces závislý od nastavení projektu:

  1. Webhooky: Pri príchode nového kódu môže GitLab informovať vonkajšie systémy (napríklad CI/CD server, systém riadenia projektov) odoslaním HTTP požiadaviek. Toto je spúšťač ďalších akcií.

  2. CI/CD pipeline: Ak je v projekte nastavený súbor .gitlab-ci.yml, GitLab Runner spustí CI/CD pipeline. Tento proces zahŕňa:

    • Kontrolu syntaxe súboru .gitlab-ci.yml.
    • Vytvorenie úloh (jobs) na základe definícií v yml súbore.
    • Priradenie úloh dostupným runnerom.
    • Runner dostane úlohy, stiahne zdrojový kód repozitára.
    • Vykoná príkazy uvedené pre každú úlohu (build, testovanie, nasadenie atď.).
    • Uloží artefakty (zostavené aplikácie, správy o testovaní) a log súbory.
    • Pošle stav vykonania úloh späť do GitLab.

    Príklad štruktúry .gitlab-ci.yml:

    stages:
      - build
      - test
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Building the application..."
        - make build
    
    test_job:
      stage: test
      script:
        - echo "Running tests..."
        - make test
    
    deploy_job:
      stage: deploy
      script:
        - echo "Deploying the application..."
        - make deploy
      only:
        - main  # Spúšťa sa iba pri push do vetvy main
    
  3. Automatické akcie: GitLab môže vykonávať ďalšie automatické akcie:

    • Vytvorenie Merge Requestu (pri pushi do vetvy odlišnej od cieľovej vetvy).
    • Aktualizácia stavu Merge Requestu (ak existuje).
    • Spustenie skenovania bezpečnosti (ak sú nastavenia povolené).
    • Automatické zatváranie alebo spájanie úloh (cez kľúčové slová v commitoch alebo popisoch Merge Requestu).
  4. Systém oznámení: GitLab odosiela oznámenia používateľom e-mailom alebo cez iné kanály (Slack, Mattermost), ak sú na udalosti v repozitári odberateľmi.

  5. Aktualizácia údajov o repozitári: Interné, GitLab aktualizuje údaje o repozitári, vetvách, tagoch a histórii commitov.

Celý proces je zameraný na integráciu nového kódu do spoločného pracovného toku, automatizáciu buildov, testovania a prípadného nasadenia, ako aj na informovanie zainteresovaných strán.