Junior
Co się dzieje po tym, jak GitLab pobierze kod?
sobes.tech AI
Odpowiedź od AI
Po pobraniu kodu (klonowaniu repozytorium), GitLab CI/CD uruchamia pipeline — zestaw zadań (jobs) i etapów (stages), zdefiniowanych w pliku .gitlab-ci.yml w katalogu głównym repozytorium.
Główne etapy typowej pipeline po pobraniu kodu:
- Stages: Pipeline dzieli się na etapy, które są wykonywane kolejno. Zadania w jednym etapie mogą być wykonywane równolegle.
- Jobs: Każde zadanie jest wykonywane na osobnym Runnerze. Runner to agent, który pobiera zadanie z GitLab CI/CD i je wykonuje.
- Commands: Wewnątrz każdego zadania wykonywane są komendy określone w sekcji
scriptw.gitlab-ci.yml. Komendy te mogą obejmować:- Budowę projektu (np. kompilacja kodu, pakowanie artefaktów).
- Uruchamianie testów (jednostkowych, integracyjnych itp.).
- Sprawdzanie jakości kodu (linting, analiza statyczna).
- Tworzenie obrazów Docker.
- Deployment (wdrożenie) w środowiskach testowych, staging lub produkcyjnych.
- Inne niezbędne działania.
- Dependencies (Zależności): Zadania mogą zależeć od wyników poprzednich zadań, używając słowa kluczowego
needs. - Artifacts (Artefakty): Wyniki wykonywania zadań (np. skompilowany kod, raporty z testów, obrazy Docker) mogą być zapisywane jako artefakty, dostępne do pobrania lub używane w kolejnych zadaniach.
- Caching (Buforowanie): Zależności lub tymczasowe pliki mogą być buforowane pomiędzy uruchomieniami zadań, aby przyspieszyć wykonanie.
- Reporting (Raportowanie): Wyniki wykonania (sukces/porażka), logi i artefakty są dostępne w interfejsie GitLab.
Przykładowa struktura .gitlab-ci.yml:
stages: # Definicja etapów
- build
- test
- deploy
build_job: # Definicja zadania
stage: build # Przynależność do etapu
script: # Komendy do wykonania
- echo "Buduję projekt..."
- mvn package # Przykład komendy build z Maven
artifacts: # Zapisywanie artefaktów
paths:
- target/*.jar
test_job:
stage: test
script:
- echo "Uruchamiam testy..."
- mvn test # Przykład komendy do uruchomienia testów
needs: # Zależność od poprzedniego zadania
- build_job
deploy_job:
stage: deploy
script:
- echo "Wdrażanie aplikacji..."
- docker build -t my-app . # Przykład budowania obrazu Docker
- docker push my-app # Przykład wysyłki obrazu do repozytorium
only: # Warunek wykonania zadania
- main # Tylko przy commitcie na gałęzi main
W ten sposób, po pobraniu kodu, GitLab CI/CD orchestruje wykonanie zdefiniowanego przez użytkownika procesu, skupiającego się na budowie, testowaniu i wdrażaniu aplikacji.