/ scripts / helm-pre-commit.sh
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."