Sobes.tech
Middle

Šta se dešava nakon što GitLab primi kod?

sobes.tech АИ

Одговор од АИ

GitLab, nakon što primi kod (obično putem git push), pokreće proces koji zavisi od podešavanja projekta:

  1. Webhook-ovi: Kada stigne novi kod, GitLab može obavestiti spoljašnje sisteme (npr. CI/CD server, sistem za upravljanje projektima) slanjem HTTP zahteva. Ovo je okidač za dalje radnje.

  2. CI/CD pipeline: Ako je u projektu podešen fajl .gitlab-ci.yml, GitLab Runner pokreće CI/CD pipeline. Ovaj proces uključuje:

    • Proveru sintakse fajla .gitlab-ci.yml.
    • Kreiranje zadataka (jobs) na osnovu definicija u yml fajlu.
    • Dodeljivanje zadataka dostupnim runner-ima.
    • Runner dobija zadatke, preuzima izvorni kod repozitorijuma.
    • Izvršava komande navedene za svaki zadatak (build, testiranje, deployment itd.).
    • Čuva artefakte (sastavljene aplikacije, izveštaje o testiranju) i log fajlove.
    • Šalje status izvršenja zadataka nazad u GitLab.

    Primer strukture .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  # Okidač samo pri push-u u granu main
    
  3. Automatske radnje: GitLab može obavljati druge automatske radnje:

    • Kreiranje Merge Request-a (pri push-u u granu koja nije ciljna grana).
    • Ažuriranje statusa Merge Request-a (ako postoji).
    • Pokretanje skeniranja bezbednosti (ako su podešavanja omogućena).
    • Automatsko zatvaranje ili povezivanje zadataka (kroz ključne reči u commit-ovima ili opisima Merge Request-a).
  4. Sistem obaveštenja: GitLab šalje obaveštenja korisnicima putem e-pošte ili drugih kanala (Slack, Mattermost), ako su pretplaćeni na događaje u repozitorijumu (novi commitovi, statusi pipeline-a, komentari).

  5. Ažuriranje podataka o repozitorijumu: Interno, GitLab ažurira podatke o repozitorijumu, granama, tagovima i istoriji commit-ova.

Ceo proces je usmeren na integraciju novog koda u zajednički radni tok, automatizaciju build-a, testiranja i eventualnog deployment-a, kao i obaveštavanje zainteresovanih strana.