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:
-
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ń.
-
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 - Sprawdzenie składni pliku
-
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).
-
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).
-
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.