🛠 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_URL
jest 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.