Sobes.tech
Middle

Kas vyksta po to, kai GitLab gauna kodą?

sobes.tech AI

Atsakymas iš AI

GitLab, gavus kodą (dažniausiai per git push), pradeda procesą, kuris priklauso nuo projekto nustatymų:

  1. Webhook'ai: Kai gaunamas naujas kodas, GitLab gali informuoti išorines sistemas (pvz., CI/CD serverį, projekto valdymo sistemą) siunčiant HTTP užklausas. Tai yra įvykio pradžia.

  2. CI/CD pipeline: Jei projekte yra nustatytas .gitlab-ci.yml failas, GitLab Runner paleidžia CI/CD pipeline. Šis procesas apima:

    • .gitlab-ci.yml failo sintaksės patikrinimą.
    • Darbų (jobs) kūrimą pagal YAML aprašymus.
    • Darbų priskyrimą prie prieinamų runner'ių.
    • Runner'iai gauna darbus, atsisiunčia šaltinio kodą.
    • Atlieka nurodytas komandas (konstravimas, testavimas, diegimas ir kt.).
    • Išsaugo artefaktus (sukurtas programas, testų ataskaitas) ir žurnalų failus.
    • Grąžina darbo vykdymo būseną į GitLab.

    Pavyzdinė .gitlab-ci.yml struktūra:

    stages:
      - build
      - test
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Kūrimas..."
        - make build
    
    test_job:
      stage: test
      script:
        - echo "Testavimas..."
        - make test
    
    deploy_job:
      stage: deploy
      script:
        - echo "Diegimas..."
        - make deploy
      only:
        - main  # veikia tik įvykus push į main šaką
    
  3. Automatiniai veiksmai: GitLab gali atlikti kitus automatinus veiksmus:

    • Merge Request sukūrimas (kai įvyksta push į kitą šaką nei tikslinė).
    • Merge Request būsenos atnaujinimas.
    • Saugumo skenavimų paleidimas (jei nustatymai įjungti).
    • Darbų automatinis užbaigimas arba susiejimas (naudojant raktinius žodžius commit'ų ar aprašymų).
  4. Pranešimų sistema: GitLab siunčia pranešimus vartotojams el. paštu ar kitais kanalais (Slack, Mattermost), jei jie prenumeruoja įvykius repozitorijoje (nauji commit'ai, pipeline būsenos, komentarai).

  5. Repozitorijos duomenų atnaujinimas: GitLab viduje atnaujinami duomenys apie repozitoriją, šakas, žymenis ir commit'ų istoriją.

Visa ši proceso dalis yra orientuota į naujo kodo integraciją į bendrą darbo eigą, automatizuotą kūrimą, testavimą ir galbūt diegimą, taip pat į suinteresuotųjų šalių informavimą.