helm-pre-commit.sh
1 #!/usr/bin/env bash 2 # Pre-commit hook for Helm chart validation. 3 # Only runs when files under charts/ are staged. 4 set -euo pipefail 5 6 CHART_DIR="charts/budibase" 7 8 # Check if any chart files are staged 9 STAGED_CHART_FILES=$(git diff --cached --name-only -- "$CHART_DIR" 2>/dev/null || true) 10 if [ -z "$STAGED_CHART_FILES" ]; then 11 exit 0 12 fi 13 14 echo "Helm chart files changed — running validation..." 15 16 # 1. helm lint 17 if command -v helm &>/dev/null; then 18 echo " → helm lint" 19 helm lint "$CHART_DIR" 20 else 21 echo " ⚠ helm not found, skipping lint" 22 fi 23 24 # 2. helm-unittest (if plugin installed) 25 if helm plugin list 2>/dev/null | grep -q unittest; then 26 echo " → helm unittest" 27 helm unittest "$CHART_DIR" 28 else 29 echo " ⚠ helm-unittest plugin not installed, skipping unit tests" 30 echo " Install with: helm plugin install https://github.com/helm-unittest/helm-unittest.git" 31 fi 32 33 # 3. kubeconform (if installed) 34 if command -v kubeconform &>/dev/null; then 35 echo " → kubeconform" 36 helm template budibase "$CHART_DIR" --set services.couchdb.enabled=false | \ 37 kubeconform -strict -summary -output text 38 else 39 echo " ⚠ kubeconform not found, skipping schema validation" 40 echo " Install from: https://github.com/yannh/kubeconform/releases" 41 fi 42 43 echo "Helm validation passed."