Skip to content

🔧 Prepare Dynamic Deployment

Dokumentacja techniczna joba

Job ten pobiera listę aktywnych środowisk z GitLab API i na ich podstawie generuje dynamiczny plik .ci/deployment.yml z jobami wdrożeniowymi. Plik ten stanowi wsad dla joba trigger-deployment, który uruchamia dynamiczny pipeline wdrożeniowy. Jeśli brak aktywnych środowisk, job kończy się bez błędu.


GitLab CI pozwala na generowanie konfiguracji pipeline w trakcie jego trwania. Job environment-deployment-prepare tworzy plik .ci/deployment.yml, który jest następnie przekazywany do joba trigger-deployment jako strategy: depend z artifact. GitLab interpretuje ten plik jako pełnoprawną konfigurację child pipeline — dzięki temu liczba i nazwy jobów wdrożeniowych są wyznaczane dynamicznie na podstawie aktywnych środowisk, a nie są z góry zaszyte w statycznej konfiguracji CI.

pipeline główny
 ├── environment-deployment-prepare   →  generuje .ci/deployment.yml
 └── trigger-deployment               →  uruchamia child pipeline z .ci/deployment.yml
       ├── 💥 Deployment:staging
       └── 💥 Deployment:production

Job używa glab CLI do pobrania listy środowisk projektu, a następnie dla każdego aktywnego środowiska dopisuje odpowiedni job wdrożeniowy do pliku .ci/deployment.yml.

glab api "projects/${CI_PROJECT_ID}/environments" \
  | jq -r '.[] | select(.state != "stopped") | .name' > .ci/envs

Wygenerowany plik jest pobierany przez job trigger-deployment, który triggeruje pipeline na jego podstawie.