Š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:
-
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.
-
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 - Proveru sintakse fajla
-
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).
-
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).
-
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.