Ctrl K
ComunidadGuías…

hack/check-render-matrix.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/bin/sh
# Render app charts on their defaults plus injected cluster/namespace values.
# helm-unittest renders only templates selected by a suite; this smoke check
# also reaches templates with no assertions. It checks rendering, not Kubernetes
# schema validity or runtime behavior. See testdata/render-fixtures/README.md.
# Usage (from the repository root): hack/check-render-matrix.sh [chart-dir ...]
set -eu

FIXTURE_DIR="hack/testdata/render-fixtures"

# Empty lookup results are the only accepted reason to skip a chart. Match the
# actual diagnostic, so another error cannot keep an obsolete skip alive.
skip_reason() {
  case "$1" in
    vm-instance) echo 'Specified instanceType does not exist in the cluster: u1.medium' ;;
    kubernetes-nodes) echo 'specified instanceType "u1.medium" not found in cluster' ;;
    *) echo "" ;;
  esac
}

render_chart() {
  chart=$1 fixture=$2
  name=$(basename "$chart")
  case "$name" in
    tenant) set -- tenant-sub --api-versions v1.edp.epam.com/v1 ;;
    # Satisfy the parent-cluster and release-name contract before the lookup.
    kubernetes-nodes) set -- kubernetes-nodes-render-check --set-string cluster=render ;;
    *) set -- "$name-render-check" ;;
  esac
  helm template "$@" "$chart" -n tenant-test -f "$fixture"
}

if [ "$#" -eq 0 ]; then
  set -- packages/apps/*/
  if [ ! -d "$1" ]; then
    echo "check-render-matrix: found no charts under packages/apps" >&2
    exit 1
  fi
fi

# Check exactly the files the render loop will consume, not nested fixtures.
fixtures=0
for fixture in "$FIXTURE_DIR"/*.yaml; do
  [ -f "$fixture" ] || continue
  fixtures=$((fixtures + 1))
done
if [ "$fixtures" -eq 0 ]; then
  echo "check-render-matrix: no fixtures under $FIXTURE_DIR" >&2
  exit 1
fi

errors=$(mktemp)
trap 'rm -f "$errors"' EXIT
rc=0 rendered=0 skipped=0
for dir in "$@"; do
  name=$(basename "$dir")
  reason=$(skip_reason "$name")
  chart_failed=0
  for fixture in "$FIXTURE_DIR"/*.yaml; do
    [ -f "$fixture" ] || continue
    state=$(basename "$fixture" .yaml)
    if render_chart "$dir" "$fixture" >/dev/null 2>"$errors"; then
      if [ -z "$reason" ]; then
        continue
      fi
      echo "FAIL $name ($state): chart now renders; remove its skip"
    else
      if [ -n "$reason" ] && grep -Fq "$reason" "$errors"; then
        continue
      fi
      echo "FAIL $name ($state)"
      sed -n '/^level=INFO/d; s/^/    /; p' "$errors"
    fi
    rc=1
    chart_failed=1
  done
  [ "$chart_failed" -eq 0 ] || continue
  if [ -n "$reason" ]; then
    echo "SKIP $name ($reason)"
    skipped=$((skipped + 1))
  else
    rendered=$((rendered + 1))
  fi
done

echo "check-render-matrix: $rendered rendered, $skipped skipped"
exit "$rc"