From 41d79d5e73b5f7b93aea40235245583fe76f7eb6 Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 16:59:59 +0530 Subject: [PATCH 01/12] change file extension from yaml to yml for system-upgrade components --- clusters/default/system-upgrade/{crd.yaml => crd.yml} | 0 ...stem-upgrade-controller.yaml => system-upgrade-controller.yml} | 0 .../{system-upgrade-plan.yaml => system-upgrade-plan.yml} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename clusters/default/system-upgrade/{crd.yaml => crd.yml} (100%) rename clusters/default/system-upgrade/{system-upgrade-controller.yaml => system-upgrade-controller.yml} (100%) rename clusters/default/system-upgrade/{system-upgrade-plan.yaml => system-upgrade-plan.yml} (100%) diff --git a/clusters/default/system-upgrade/crd.yaml b/clusters/default/system-upgrade/crd.yml similarity index 100% rename from clusters/default/system-upgrade/crd.yaml rename to clusters/default/system-upgrade/crd.yml diff --git a/clusters/default/system-upgrade/system-upgrade-controller.yaml b/clusters/default/system-upgrade/system-upgrade-controller.yml similarity index 100% rename from clusters/default/system-upgrade/system-upgrade-controller.yaml rename to clusters/default/system-upgrade/system-upgrade-controller.yml diff --git a/clusters/default/system-upgrade/system-upgrade-plan.yaml b/clusters/default/system-upgrade/system-upgrade-plan.yml similarity index 100% rename from clusters/default/system-upgrade/system-upgrade-plan.yaml rename to clusters/default/system-upgrade/system-upgrade-plan.yml -- 2.49.1 From c3b7a0b55588c77101c0327ebedd6c5609c3fe83 Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:00:15 +0530 Subject: [PATCH 02/12] add plan in schema-map --- .gitea/workflows/kubeconform.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitea/workflows/kubeconform.yml b/.gitea/workflows/kubeconform.yml index 7a421db..647ac31 100644 --- a/.gitea/workflows/kubeconform.yml +++ b/.gitea/workflows/kubeconform.yml @@ -53,6 +53,7 @@ jobs: ["IPAddressPool"]="metallb.io/ipaddresspool_v1beta1.json" ["SealedSecret"]="bitnami.com/sealedsecret_v1alpha1.json" ["ClusterPolicy"]="nvidia.com/clusterpolicy_v1.json" + ["Plan"]="upgrade.cattle.io/plan_v1.json" ) EXIT_CODE=0 -- 2.49.1 From 6359b735e64e372a8e9186cfd003ca8747779fec Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:03:57 +0530 Subject: [PATCH 03/12] fix: correct array expansion in kubeconform validation script --- .gitea/workflows/kubeconform.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/kubeconform.yml b/.gitea/workflows/kubeconform.yml index 647ac31..07926da 100644 --- a/.gitea/workflows/kubeconform.yml +++ b/.gitea/workflows/kubeconform.yml @@ -88,6 +88,6 @@ jobs: fi echo "" - done <<< "${ALL_CHANGED_FILES}" + done <<< "${ALL_CHANGED_FILES[@]}" exit $EXIT_CODE -- 2.49.1 From 513bcc777906d858f949bd1627a7e22e1299ecc9 Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:05:45 +0530 Subject: [PATCH 04/12] use for loop instead of while --- .gitea/workflows/kubeconform.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/kubeconform.yml b/.gitea/workflows/kubeconform.yml index 07926da..5cfb676 100644 --- a/.gitea/workflows/kubeconform.yml +++ b/.gitea/workflows/kubeconform.yml @@ -60,7 +60,7 @@ jobs: export KUBECONFORM_CACHE_DIR="/tmp/kubeconform-cache" mkdir -p "$KUBECONFORM_CACHE_DIR" - while IFS= read -r file; do + for file in ${ALL_CHANGED_FILES}; do [ -z "$file" ] && continue echo "=== Validating: $file ===" KIND=$(yq -r '.kind // ""' "$file" 2>/dev/null || echo "") @@ -88,6 +88,6 @@ jobs: fi echo "" - done <<< "${ALL_CHANGED_FILES[@]}" + done exit $EXIT_CODE -- 2.49.1 From afbed46ac93bd02a66beabf08cb91b4d6d782c6f Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:17:29 +0530 Subject: [PATCH 05/12] change system-upgrade crd extension --- clusters/default/system-upgrade/{crd.yml => crd.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename clusters/default/system-upgrade/{crd.yml => crd.yaml} (100%) diff --git a/clusters/default/system-upgrade/crd.yml b/clusters/default/system-upgrade/crd.yaml similarity index 100% rename from clusters/default/system-upgrade/crd.yml rename to clusters/default/system-upgrade/crd.yaml -- 2.49.1 From 3e755d9e2b4aaa89339e15b041e3516bcdee9e75 Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:25:03 +0530 Subject: [PATCH 06/12] change release channel in system-upgrade-plan --- clusters/default/system-upgrade/system-upgrade-plan.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clusters/default/system-upgrade/system-upgrade-plan.yml b/clusters/default/system-upgrade/system-upgrade-plan.yml index cbf64b5..e4b661d 100644 --- a/clusters/default/system-upgrade/system-upgrade-plan.yml +++ b/clusters/default/system-upgrade/system-upgrade-plan.yml @@ -16,7 +16,7 @@ spec: serviceAccountName: system-upgrade upgrade: image: rancher/k3s-upgrade - channel: https://update.k3s.io/v1-release/channels/stable + channel: https://update.k3s.io/v1-release/channels/v1.33 --- # Agent plan apiVersion: upgrade.cattle.io/v1 @@ -39,4 +39,4 @@ spec: serviceAccountName: system-upgrade upgrade: image: rancher/k3s-upgrade - channel: https://update.k3s.io/v1-release/channels/stable + channel: https://update.k3s.io/v1-release/channels/v1.33 -- 2.49.1 From fa09f39d938e22f35aa12ef2b01005eaf07b7230 Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:28:57 +0530 Subject: [PATCH 07/12] check for multiple resources in each file in kubeconform workflow --- .gitea/workflows/kubeconform.yml | 46 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/.gitea/workflows/kubeconform.yml b/.gitea/workflows/kubeconform.yml index 5cfb676..d4ec417 100644 --- a/.gitea/workflows/kubeconform.yml +++ b/.gitea/workflows/kubeconform.yml @@ -63,30 +63,30 @@ jobs: for file in ${ALL_CHANGED_FILES}; do [ -z "$file" ] && continue echo "=== Validating: $file ===" - KIND=$(yq -r '.kind // ""' "$file" 2>/dev/null || echo "") - - if [[ -n "$KIND" && -n "${SCHEMA_MAP[$KIND]}" ]]; then - echo "Found $KIND - using custom schema" - SCHEMA_URL="https://raw.githubusercontent.com/datreeio/CRDs-catalog/refs/heads/main/${SCHEMA_MAP[$KIND]}" - - if ! /kubeconform \ - -schema-location "$SCHEMA_URL" \ - -cache "$KUBECONFORM_CACHE_DIR" \ - -output json \ - "$file"; then - EXIT_CODE=1 + DOC_COUNT=$(yq eval 'length' <(yq eval-all '.' "$file")) + for i in $(seq 0 $((DOC_COUNT - 1))); do + KIND=$(yq eval ".[$i].kind // \"\"" <(yq eval-all '.' "$file")) + if [[ -n "$KIND" && -n "${SCHEMA_MAP[$KIND]}" ]]; then + echo "Found $KIND in document $i - using custom schema" + SCHEMA_URL="https://raw.githubusercontent.com/datreeio/CRDs-catalog/refs/heads/main/${SCHEMA_MAP[$KIND]}" + if ! /kubeconform \ + -schema-location "$SCHEMA_URL" \ + -cache "$KUBECONFORM_CACHE_DIR" \ + -output json \ + "$file"; then + EXIT_CODE=1 + fi + else + echo "Validating document $i with default schemas" + if ! /kubeconform \ + -schema-location default \ + -cache "$KUBECONFORM_CACHE_DIR" \ + -output json \ + "$file"; then + EXIT_CODE=1 + fi fi - else - echo "Validating with default schemas" - if ! /kubeconform \ - -schema-location default \ - -cache "$KUBECONFORM_CACHE_DIR" \ - -output json \ - "$file"; then - EXIT_CODE=1 - fi - fi - + done echo "" done -- 2.49.1 From 1366c0780acae5b7efb983759fc52635b921904d Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:31:36 +0530 Subject: [PATCH 08/12] fix: improve document counting in kubeconform validation --- .gitea/workflows/kubeconform.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/kubeconform.yml b/.gitea/workflows/kubeconform.yml index d4ec417..e5bc357 100644 --- a/.gitea/workflows/kubeconform.yml +++ b/.gitea/workflows/kubeconform.yml @@ -63,9 +63,9 @@ jobs: for file in ${ALL_CHANGED_FILES}; do [ -z "$file" ] && continue echo "=== Validating: $file ===" - DOC_COUNT=$(yq eval 'length' <(yq eval-all '.' "$file")) - for i in $(seq 0 $((DOC_COUNT - 1))); do - KIND=$(yq eval ".[$i].kind // \"\"" <(yq eval-all '.' "$file")) + DOCS=$(yq eval-all '...' "$file" | wc -l) + for i in $(seq 0 $((DOCS - 1))); do + KIND=$(yq eval-all ".[$i].kind // \"\"" "$file") if [[ -n "$KIND" && -n "${SCHEMA_MAP[$KIND]}" ]]; then echo "Found $KIND in document $i - using custom schema" SCHEMA_URL="https://raw.githubusercontent.com/datreeio/CRDs-catalog/refs/heads/main/${SCHEMA_MAP[$KIND]}" -- 2.49.1 From 79aedeae6b5462b2b9fedd1df296fce23b1693ce Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:32:55 +0530 Subject: [PATCH 09/12] fix infinite loop --- .gitea/workflows/kubeconform.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/kubeconform.yml b/.gitea/workflows/kubeconform.yml index e5bc357..cbac960 100644 --- a/.gitea/workflows/kubeconform.yml +++ b/.gitea/workflows/kubeconform.yml @@ -63,8 +63,8 @@ jobs: for file in ${ALL_CHANGED_FILES}; do [ -z "$file" ] && continue echo "=== Validating: $file ===" - DOCS=$(yq eval-all '...' "$file" | wc -l) - for i in $(seq 0 $((DOCS - 1))); do + DOC_COUNT=$(yq eval-all '...' "$file" | grep -c '^---') + for i in $(seq 0 $((DOC_COUNT - 1))); do KIND=$(yq eval-all ".[$i].kind // \"\"" "$file") if [[ -n "$KIND" && -n "${SCHEMA_MAP[$KIND]}" ]]; then echo "Found $KIND in document $i - using custom schema" -- 2.49.1 From b08aa7680bbd8ba95eff9e462283968c0856bc40 Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:37:51 +0530 Subject: [PATCH 10/12] add better multi doc support --- .gitea/workflows/kubeconform.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/kubeconform.yml b/.gitea/workflows/kubeconform.yml index cbac960..705e6a1 100644 --- a/.gitea/workflows/kubeconform.yml +++ b/.gitea/workflows/kubeconform.yml @@ -65,7 +65,9 @@ jobs: echo "=== Validating: $file ===" DOC_COUNT=$(yq eval-all '...' "$file" | grep -c '^---') for i in $(seq 0 $((DOC_COUNT - 1))); do - KIND=$(yq eval-all ".[$i].kind // \"\"" "$file") + TMP_DOC="/tmp/doc_${i}_$$.yaml" + yq eval-all ".[$i]" "$file" > "$TMP_DOC" + KIND=$(yq eval ".kind // \"\"" "$TMP_DOC") if [[ -n "$KIND" && -n "${SCHEMA_MAP[$KIND]}" ]]; then echo "Found $KIND in document $i - using custom schema" SCHEMA_URL="https://raw.githubusercontent.com/datreeio/CRDs-catalog/refs/heads/main/${SCHEMA_MAP[$KIND]}" @@ -73,7 +75,7 @@ jobs: -schema-location "$SCHEMA_URL" \ -cache "$KUBECONFORM_CACHE_DIR" \ -output json \ - "$file"; then + "$TMP_DOC"; then EXIT_CODE=1 fi else @@ -82,10 +84,11 @@ jobs: -schema-location default \ -cache "$KUBECONFORM_CACHE_DIR" \ -output json \ - "$file"; then + "$TMP_DOC"; then EXIT_CODE=1 fi fi + rm -f "$TMP_DOC" done echo "" done -- 2.49.1 From 2e59fd5140cb00ef66d6e7adc6b2743976a1ce4f Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:38:03 +0530 Subject: [PATCH 11/12] add separator for YAML documents in system-upgrade configuration files --- clusters/default/system-upgrade/system-upgrade-controller.yml | 1 + clusters/default/system-upgrade/system-upgrade-plan.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/clusters/default/system-upgrade/system-upgrade-controller.yml b/clusters/default/system-upgrade/system-upgrade-controller.yml index 3a178e3..906aed0 100644 --- a/clusters/default/system-upgrade/system-upgrade-controller.yml +++ b/clusters/default/system-upgrade/system-upgrade-controller.yml @@ -1,3 +1,4 @@ +--- apiVersion: v1 kind: Namespace metadata: diff --git a/clusters/default/system-upgrade/system-upgrade-plan.yml b/clusters/default/system-upgrade/system-upgrade-plan.yml index e4b661d..fae52da 100644 --- a/clusters/default/system-upgrade/system-upgrade-plan.yml +++ b/clusters/default/system-upgrade/system-upgrade-plan.yml @@ -1,3 +1,4 @@ +--- # Server plan apiVersion: upgrade.cattle.io/v1 kind: Plan -- 2.49.1 From 538188dca0e93a90ad286d5dd1ac2c408e068ba7 Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 12 Dec 2025 17:40:53 +0530 Subject: [PATCH 12/12] skip empty docs --- .gitea/workflows/kubeconform.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitea/workflows/kubeconform.yml b/.gitea/workflows/kubeconform.yml index 705e6a1..5fd4e79 100644 --- a/.gitea/workflows/kubeconform.yml +++ b/.gitea/workflows/kubeconform.yml @@ -67,6 +67,11 @@ jobs: for i in $(seq 0 $((DOC_COUNT - 1))); do TMP_DOC="/tmp/doc_${i}_$$.yaml" yq eval-all ".[$i]" "$file" > "$TMP_DOC" + if [[ ! -s "$TMP_DOC" ]] || grep -q '^\s*$' "$TMP_DOC"; then + echo "Skipping empty or invalid document $i in $file" + rm -f "$TMP_DOC" + continue + fi KIND=$(yq eval ".kind // \"\"" "$TMP_DOC") if [[ -n "$KIND" && -n "${SCHEMA_MAP[$KIND]}" ]]; then echo "Found $KIND in document $i - using custom schema" -- 2.49.1