Komponent do automatycznej walidacji jakości i poprawności kodu w procesach CI/CD.
1 - 🛠 Job template: 🔬 Validate files (conftest)
Job Validate files (conftest) pozwala na automatyczną walidację plików YAML/JSON w oparciu o polityki OPA/Conftest.
Pipeline pobiera repozytorium z politykami, przygotowuje środowisko i uruchamia testy w zadanym namespace.
Idealnie sprawdza się na etapie validate w pipeline’ach CI/CD.
Wymagania wstępne
⚙️ Parametry wejściowe (inputs)
| Nazwa | Typ | Domyślna wartość | Opis |
|---|---|---|---|
docker_image |
string | registry.gitlab.com/pl.rachuna-net/containers/conftest:1.0.0 |
Obraz Dockera z narzędziem Conftest |
logo_url |
string | https://gitlab.com/pl.rachuna-net/cicd/gitlab-ci/-/raw/main/_configs/_logo?ref_type=heads |
Adres URL logo wyświetlanego w logach |
repository_policies |
string | git@gitlab.com:pl.rachuna-net/discipline.git |
Repozytorium GitLab z politykami OPA/Conftest |
repository_policies_branch |
string | main |
Branch repozytorium z politykami |
repository_policies_path |
string | policies/conftest |
Ścieżka katalogu polityk w repozytorium |
source_files |
string | *.yml |
Pliki w repozytorium, które mają być testowane |
namespace_policy |
string | (puste) | Przestrzeń nazw dla polityk Conftest (namespace) |
🧬 Zmienne środowiskowe ustawiane w jobie
CONTAINER_IMAGE_CONFTEST– obraz Dockera Conftest (na podstawieinputs.docker_image)LOGO_URL– ścieżka do logo (na podstawieinputs.logo_url)REPOSITORY_POLICIES– repozytorium z politykamiREPOSITORY_POLICIES_BRANCH– branch repozytorium z politykamiREPOSITORY_POLICIES_PATH– katalog polityk w repozytoriumSOURCE_FILES– pliki do testowaniaNAMESPACE_POLICY– przestrzeń nazw polityk Conftest
📤 Output
Job wykonuje następujące kroki:
- Pobranie logo (jeżeli
LOGO_URLjest ustawiony). - Wyświetlenie informacji o przekazanych parametrach (
_function_print_row). - Klonowanie repozytorium z politykami (
repository_policies) w odpowiednim branchu. - Uruchomienie Conftest z wykorzystaniem wskazanych plików (
source_files) i polityk (repository_policies_path) w przestrzeni nazwnamespace_policy.
Przykład logu:
===> 🔬 Conftest Validate - Parameters
┌───────────────────────────────────┬─────────────────────────────────────────────────────┐
│ Variable │ Value │
├───────────────────────────────────┼─────────────────────────────────────────────────────┤
│ REPOSITORY_POLICIES │ git@gitlab.com:pl.rachuna-net/discipline.git │
│ REPOSITORY_POLICIES_PATH │ policies/conftest │
│ SOURCE_FILES │ *.yml │
└───────────────────────────────────┴─────────────────────────────────────────────────────┘
🧪 Dostępne joby
🔬 Validate files (conftest)
Waliduje wskazane pliki repozytorium względem polityk Conftest:
🔬 Validate files (conftest):
stage: validate
image: $CONTAINER_IMAGE_CONFTEST
before_script:
- git config --global --add safe.directory ${CI_PROJECT_DIR}
- [ ! -z "${LOGO_URL}" ] && curl -s "${LOGO_URL}"
- !reference [.validate:_function_print_row]
- !reference [.validate:conftest_input_variables]
- !reference [.validate:conftest_prepare]
script:
- conftest test $SOURCE_FILES --policy $REPOSITORY_POLICIES_PATH --namespace $NAMESPACE_POLICY
🧪 Przykład użycia w pipeline
include:
- component: $CI_SERVER_FQDN/pl.rachuna-net/cicd/components/validate/conftest@$COMPONENT_VERSION_VALIDATE
inputs:
repository_policies: git@gitlab.com:pl.rachuna-net/discipline.git
repository_policies_path: policies/k8s
source_files: "config.yml"
namespace_policy: image_builder
⚡ Dzięki temu szablonowi szybko weryfikujesz zgodność konfiguracji z politykami OPA/Conftest bez ręcznej konfiguracji za każdym razem w pipeline’ach.
2 - 🛠 Job template: 🕵 yamllint
Komponent Yamllint jest odpowiedzialny za walidację wszystkich plików YAML w repozytorium w ramach stage validate.
Wykorzystuje narzędzie yamllint oraz centralny plik konfiguracyjny .yamllint.yml, aby zapewnić spójność stylu i poprawności składniowej plików YAML.
- Uruchamiany w ramach jobu 🕵 YAML lint
- Możliwość pełnej parametryzacji obrazu Dockera i ścieżek
- Automatycznie dołącza pliki pomocnicze (
function_print_row.yml,logo.yml, itp.) - Można go łatwo zaimportować do dowolnego pipeline za pomocą sekcji include

Job, który wykonuje walidację składni plików YAML w repozytorium przy użyciu narzędzia yamllint.
⚙️ Parametry wejściowe (inputs)
| Nazwa | Typ | Domyślna wartość | Opis |
|---|---|---|---|
docker_image |
string | registry.gitlab.com/pl.rachuna-net/containers/python:2.0.0 |
Obraz Dockera z interpreterem Pythona lub shellem. |
logo_url |
string | https://gitlab.com/pl.rachuna-net/cicd/gitlab-ci/-/raw/main/_configs/_logo?ref_type=heads |
URL logotypu wyświetlanego w logach joba. |
validate_repo_namespace |
string | pl.rachuna-net/cicd/components/validate |
Namespace i ścieżka do repozytorium komponentu validate. |
validate_repo_branch |
string | main |
Gałąź komponentu validate, z której pobierane są pliki. |
yamllint_path |
string | _configs/validate/.yamllint.yml |
Ścieżka do pliku konfiguracyjnego yamllint. |
🧬 Zmienne środowiskowe obsługiwane przez skrypt
Job ustawia i wykorzystuje poniższe zmienne środowiskowe:
CONTAINER_IMAGE_PYTHON– wybrany obraz Dockera.LOGO_URL– adres logotypu, który jest opcjonalnie pobierany w trakcie uruchamiania joba.VALIDATE_REPO_NAMESPACE– namespace repozytorium komponentu validate.VALIDATE_REPO_BRANCH– gałąź repozytorium komponentu validate.YAMLLINT_PATH– ścieżka do pliku konfiguracyjnego yamllint.
📤 Output
Job wykonuje linting plików YAML i wypisuje wyniki w logach pipeline’u w formie standardowej dla narzędzia yamllint, np.:
===> 🔍 YAML lint results
source/ci-template.yml
10:3 warning missing document start "---" (document-start)
22:1 error too many blank lines (1 > 0) (empty-lines)
W przypadku błędów job kończy się statusem failed.