.
├── .gitlab-ci.yml
├── configs # konfiguracja dla całego procesu
│ ├── stages.yml
│ ├── variables.yml
│ └── workflow.yml
├── ci_jobs # wspólne ci_joby
│ ├── analyze_conventional_commits
│ ├── code_review
│ ├── versioning
│ └── yamllint
├── ci_pipelines # pipeline dla procesów CI
│ ├── gitlab-ci
│ ├── image-builder
│ ├── opentofu
│ └── opentofu-module
└── scripts # skrypty wspomagające
├── helper_gitlab-ci.yml
└── helper_readme.yml
---
stages:
### Standard w ramach dyscypliny
- prepare # przygotowanie środowiska, instalacja zależności, inicjalizacja.
- dependency # pobieranie zależności (biliotek, funkcji, komponentów)
- validate # weryfikacja poprawności konfiguracji, linting, planowanie zmian (Terraform, Ansible), pre-commit checks.
- unit-test # testy jednostkowe dla kodu (Go, .NET, Node.js itp.).
- sast # analiza statyczna kodu (Static Application Security Testing).
- dast # analiza dynamiczna aplikacji (Dynamic Application Security Testing).
- build # budowanie artefaktów (Packer, kontenery, kod źródłowy).
- publish # publikacja artefaktów, obrazów kontenerowych, paczek NuGet, npm itp.
- release # Wydawanie wersji
- deploy # wdrażanie aplikacji, infrastruktury, konfiguracji.
- integration-test # testy integracyjne, e2e, testy akceptacyjne.
- cleanup # usuwanie tymczasowych zasobów, sprzątanie środowiska.
---
workflow:
rules:
- if: '$CI_COMMIT_TAG'
when: never
- if: $CI_PIPELINE_SOURCE == "push" && $CI_OPEN_MERGE_REQUESTS
when: never
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TITLE =~ /^(\[Draft\]|\(Draft\)|Draft:)/
when: never
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_PIPELINE_SOURCE == "web"
- if: $CI_PIPELINE_SOURCE == "push"
- if: $CI_COMMIT_BRANCH