🛠 Job template: 🔬 Validate files (conftest)
🔍 Pipeline do walidacji plików za pomocą Conftest
2 minute read
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.