From e7031711a063d95b39d1d570a3b0e287ebedfafd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Honeiser?= Date: Wed, 28 Jan 2026 16:22:01 +0100 Subject: [PATCH] fix(validate-k8s-manifests): properly handle env & additional region values files The validate-k8s-manifests workflow does not respect region specific values files as it should. We support 3 "types" of naming patterns for values files at the moment: * GPA Pattern: %domain%\.values\.(yaml|yml) e.g.: webservices.values.yaml * tenant (env in primary region) Pattern: values(-ent)?-[[:alnum:]]+\.(yaml|yml) e.g.: values-prod.yaml * Tenant (env in additional region) Pattern: values(-ent)?-[[:alnum:]]+((-[[:alnum:]]+){2})?\.(yaml|yml) e.g.: values-prod-europe-west1.yaml We generally consider case 3 to be an additional values file that's merged on top of case 2's values file (e.g. in ArgoCD). This change renders case 3 to an extra artifact to make validation work as expected. --- .github/workflows/validate-k8s-manifests.yml | 37 +++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/.github/workflows/validate-k8s-manifests.yml b/.github/workflows/validate-k8s-manifests.yml index e4e1b53..eb102f9 100644 --- a/.github/workflows/validate-k8s-manifests.yml +++ b/.github/workflows/validate-k8s-manifests.yml @@ -68,11 +68,38 @@ jobs: git checkout "$HEAD_REF" -- if [ -f "$MATRIX_CHART/Chart.yaml" ]; then helm dependency update "$MATRIX_CHART" - values_files=$(find "$MATRIX_CHART" -maxdepth 1 -type f \( -name '*values*.yaml' -o -name '*values*.yml' \) ! \( -name 'values.yaml' -o -name 'values.yml' \)) - for values_file in $values_files; do - filename=$(basename "$values_file") - helm template $(basename -a "$MATRIX_CHART") "$MATRIX_CHART" -f "$MATRIX_CHART/values.yaml" -f "${values_file}" --output-dir "shared/charts/$MATRIX_CHART/${filename%.*}" - done + + while read values_file; do + filename=$(basename "${values_file}") + filename_without_suffix=${filename%.*} + + env=${filename_without_suffix%*.values} + env=${env#values-*} + + helm template $(basename -a "$MATRIX_CHART" ) "$MATRIX_CHART" \ + -f $values_file \ + --output-dir shared/charts/$MATRIX_CHART/$filename_without_suffix + + while read region_values_file; do + region_filename=$(basename $region_values_file) + region_filename_without_suffix=${region_filename%.*} + + helm template $(basename -a "$MATRIX_CHART") "$MATRIX_CHART" \ + -f $values_file \ + -f $region_values_file \ + --output-dir shared/charts/$MATRIX_CHART/$region_filename_without_suffix + + done < <(find "$BASE_DIR/$MATRIX_CHART" \ + -maxdepth 1 \ + -type f \ + -regextype egrep \ + -regex ".*/values-${env}(-[[:alnum:]]+){2}\.(yaml|yml)$") + done < <(find "$BASE_DIR/$MATRIX_CHART" \ + -maxdepth 1 \ + -type f \ + -regextype egrep \ + -regex ".*/([[:alnum:]]+\.)?values((-ent)?-([[:alnum:]]+))?\.(yaml|yml)$" \ + -not -regex ".*/values.(yaml|yml)$") fi echo sanitized_name=$(echo "$MATRIX_CHART" | sed 's/\//-/g') >> $GITHUB_OUTPUT env: