Sobes.tech
Middle

Co się dzieje po otrzymaniu kodu przez GitLab?

sobes.tech AI

Odpowiedź od AI

GitLab, otrzymując kod (zazwyczaj przez git push), inicjuje proces zależny od ustawień projektu:

  1. Webhooki: Gdy pojawi się nowy kod, GitLab może powiadomić zewnętrzne systemy (np. serwer CI/CD, system zarządzania projektem) wysyłając żądania HTTP. To działa jako wyzwalacz dla dalszych działań.

  2. Pipeline CI/CD: Jeśli w projekcie skonfigurowano plik .gitlab-ci.yml, GitLab Runner uruchamia pipeline CI/CD. Proces ten obejmuje:

    • Sprawdzenie składni pliku .gitlab-ci.yml.
    • Tworzenie zadań (jobs) na podstawie definicji w pliku yml.
    • Przydzielenie zadań dostępnych runnerom.
    • Runner otrzymuje zadania, pobiera kod źródłowy repozytorium.
    • Wykonuje polecenia określone dla każdego zadania (budowa, testy, wdrożenie itp.).
    • Zapisuje artefakty (zbudowane aplikacje, raporty z testów) i pliki logów.
    • Wysyła status zadań z powrotem do GitLab.

    Przykład struktury .gitlab-ci.yml:

    stages:
      - build
      - test
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Buduję aplikację..."
        - make build
    
    test_job:
      stage: test
      script:
        - echo "Uruchamiam testy..."
        - make test
    
    deploy_job:
      stage: deploy
      script:
        - echo "Wdrażam aplikację..."
        - make deploy
      only:
        - main  # Wyzwala się tylko przy pushu do gałęzi main
    
  3. Automatyczne działania: GitLab może wykonywać inne automatyczne działania:

    • Tworzenie Merge Request (przy pushu do gałęzi innej niż docelowa).
    • Aktualizacja statusu Merge Request (jeśli istnieje).
    • Uruchamianie skanów bezpieczeństwa (jeśli skonfigurowane).
    • Automatyczne zamykanie lub łączenie zadań (przez słowa kluczowe w commitach lub opisie Merge Request).
  4. System powiadomień: GitLab wysyła powiadomienia do użytkowników e-mailem lub przez inne kanały (Slack, Mattermost), jeśli są zapisani na zdarzenia w repozytorium (nowe commity, statusy pipeline, komentarze).

  5. Aktualizacja danych repozytorium: Wewnętrznie GitLab aktualizuje dane o repozytorium, gałęziach, tagach i historii commitów.

Proces ten ma na celu integrację nowego kodu z ogólnym procesem pracy, automatyzację budowania, testowania i ewentualnie wdrażania, a także powiadamianie zainteresowanych stron.