@@ -39,135 +39,6 @@ if [[ ! -f "$CRD_FILE" ]]; then
3939 exit 1
4040fi
4141
42- # Validate each sample file
43- for sample in " $SAMPLES_DIR " /* .yaml; do
44- [[ -f " $sample " ]] || continue
45-
46- filename=$( basename " $sample " )
47- echo " Checking: $filename "
48-
49- # Skip README
50- if [[ " $filename " == " README.md" ]]; then
51- continue
52- fi
53-
54- # Check 1: Valid YAML syntax
55- if ! python3 -c " import yaml; yaml.safe_load(open('$sample '))" 2> /dev/null; then
56- echo -e " ${RED} ✗${NC} Invalid YAML syntax"
57- (( ERRORS++ ))
58- continue
59- fi
60- echo -e " ${GREEN} ✓${NC} Valid YAML syntax"
61-
62- # Check 2: Has apiVersion and kind
63- if ! grep -q " ^apiVersion:" " $sample " ; then
64- echo -e " ${RED} ✗${NC} Missing apiVersion field"
65- (( ERRORS++ ))
66- else
67- echo -e " ${GREEN} ✓${NC} Has apiVersion"
68- fi
69-
70- if ! grep -q " ^kind:" " $sample " ; then
71- echo -e " ${RED} ✗${NC} Missing kind field"
72- (( ERRORS++ ))
73- else
74- echo -e " ${GREEN} ✓${NC} Has kind"
75- fi
76-
77- # Check 3: Has metadata.name
78- if ! grep -q " ^ name:" " $sample " ; then
79- echo -e " ${YELLOW} ⚠${NC} Missing metadata.name"
80- (( WARNINGS++ ))
81- else
82- echo -e " ${GREEN} ✓${NC} Has metadata.name"
83- fi
84-
85- # Check 4: Has metadata.namespace
86- if ! grep -q " ^ namespace:" " $sample " ; then
87- echo -e " ${YELLOW} ⚠${NC} Missing metadata.namespace"
88- (( WARNINGS++ ))
89- else
90- echo -e " ${GREEN} ✓${NC} Has metadata.namespace"
91- fi
92-
93- # Check 5: Validate against CRD schema if kubectl is available
94- if command -v kubectl > /dev/null 2>&1 ; then
95- # Dry-run validation against the CRD
96- if kubectl apply -f " $sample " --dry-run=server 2> /dev/null; then
97- echo -e " ${GREEN} ✓${NC} Passes CRD validation (dry-run)"
98- else
99- echo -e " ${RED} ✗${NC} Failed CRD validation (dry-run)"
100- (( ERRORS++ ))
101- fi
102- else
103- echo -e " ${YELLOW} ⚠${NC} kubectl not available - skipping CRD validation"
104- fi
105-
106- echo " "
107- done
108-
109- # Summary
110- echo " ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
111- echo " Sample Manifest Check Summary:"
112- echo -e " Errors: ${RED} $ERRORS ${NC} "
113- echo -e " Warnings: ${YELLOW} $WARNINGS ${NC} "
114- echo " ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
115-
116- if [[ $ERRORS -gt 0 ]]; then
117- echo " "
118- echo " ❌ Sample manifest check FAILED"
119- echo " Fix the errors above or run: make regenerate-samples"
120- exit 1
121- elif [[ $WARNINGS -gt 0 ]]; then
122- echo " "
123- echo " ⚠️ Sample manifest check passed with warnings"
124- exit 0
125- else
126- echo " "
127- echo " ✅ All sample manifests are valid and up-to-date"
128- exit 0
129- fi
130- #! /usr/bin/env bash
131- # check-stale-samples.sh - Detect and optionally fix stale sample manifests
132- #
133- # This script validates that sample manifests in config/samples/ are:
134- # 1. Syntactically valid YAML
135- # 2. Conform to the current CRD schema
136- # 3. Not missing required fields
137- #
138- # Related: #1146 - Create automated stale sample manifest detector and fixer
139-
140- set -euo pipefail
141-
142- SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
143- PROJECT_ROOT=" $( cd " $SCRIPT_DIR /.." && pwd) "
144- SAMPLES_DIR=" $PROJECT_ROOT /config/samples"
145- CRD_FILE=" $PROJECT_ROOT /config/crd/stellarnode-crd.yaml"
146-
147- # Colors for output
148- RED=' \033[0;31m'
149- GREEN=' \033[0;32m'
150- YELLOW=' \033[1;33m'
151- NC=' \033[0m' # No Color
152-
153- ERRORS=0
154- WARNINGS=0
155-
156- echo " → Checking sample manifests in $SAMPLES_DIR ..."
157- echo " "
158-
159- # Check if samples directory exists
160- if [[ ! -d " $SAMPLES_DIR " ]]; then
161- echo " ERROR: Samples directory not found: $SAMPLES_DIR "
162- exit 1
163- fi
164-
165- # Check if CRD file exists
166- if [[ ! -f " $CRD_FILE " ]]; then
167- echo " ERROR: CRD file not found: $CRD_FILE "
168- exit 1
169- fi
170-
17142# Validate each sample file
17243for sample in " $SAMPLES_DIR " /* .yaml; do
17344 [[ -f " $sample " ]] || continue
0 commit comments