From a33b821414f6862d0660bc238dc2ca8725fd4036 Mon Sep 17 00:00:00 2001 From: pyd-07 Date: Wed, 26 Aug 2026 14:22:44 +0000 Subject: [PATCH] fix: omit empty CRD metadata in helm chart Signed-off-by: pyd-07 --- .github/workflows/helm-test.yaml | 10 ++++---- Makefile | 24 ++++++++++++++++--- .../policies.kyverno.io_deletingpolicies.yaml | 4 ++++ ...olicies.kyverno.io_generatingpolicies.yaml | 4 ++++ ...es.kyverno.io_imagevalidatingpolicies.yaml | 4 ++++ .../policies.kyverno.io_mutatingpolicies.yaml | 4 ++++ ...kyverno.io_namespaceddeletingpolicies.yaml | 4 ++++ ...verno.io_namespacedgeneratingpolicies.yaml | 4 ++++ ....io_namespacedimagevalidatingpolicies.yaml | 4 ++++ ...kyverno.io_namespacedmutatingpolicies.yaml | 4 ++++ ...verno.io_namespacedvalidatingpolicies.yaml | 4 ++++ .../policies.kyverno.io_policyexceptions.yaml | 4 ++++ ...olicies.kyverno.io_validatingpolicies.yaml | 4 ++++ 13 files changed, 70 insertions(+), 8 deletions(-) diff --git a/.github/workflows/helm-test.yaml b/.github/workflows/helm-test.yaml index dd5a76e..1ad840d 100644 --- a/.github/workflows/helm-test.yaml +++ b/.github/workflows/helm-test.yaml @@ -38,11 +38,11 @@ jobs: set -e export HELM=${{ steps.helm.outputs.helm-path }} make helm-install - # - name: Helm test - # run: | - # set -e - # export HELM=${{ steps.helm.outputs.helm-path }} - # make helm-test + - name: Helm test + run: | + set -e + export HELM=${{ steps.helm.outputs.helm-path }} + make helm-test linter-artifacthub: runs-on: ubuntu-latest diff --git a/Makefile b/Makefile index a55e899..33717dc 100644 --- a/Makefile +++ b/Makefile @@ -118,9 +118,8 @@ helm-chart: controller-gen @echo Generate helm crds... >&2 @rm -rf charts/kyverno-api/templates/crds && mkdir -p charts/kyverno-api/templates/crds @cp $(CRDS_PATH)/*.yaml charts/kyverno-api/templates/crds/ - @$(SED) -i '/^ annotations:/a \ \ \ \ {{- include "kyverno-api.annotations" . | nindent 4 }}' charts/kyverno-api/templates/crds/* - @$(SED) -i '/^ annotations:/i \ \ labels:' charts/kyverno-api/templates/crds/* - @$(SED) -i '/^ labels:/a \ \ \ \ {{- include "kyverno-api.labels" . | nindent 4 }}' charts/kyverno-api/templates/crds/* + @$(SED) -i '/^ annotations:/c\ {{- if .Values.annotations }}\n annotations:\n {{- include "kyverno-api.annotations" . | nindent 4 }}\n {{- end }}' charts/kyverno-api/templates/crds/* + @$(SED) -i '/^ {{- if .Values.annotations }}/i\ {{- if .Values.labels }}\n labels:\n {{- include "kyverno-api.labels" . | nindent 4 }}\n {{- end }}' charts/kyverno-api/templates/crds/* @$(SED) -i '/controller-gen.kubebuilder.io/d' charts/kyverno-api/templates/crds/* .PHONY: helm-docs @@ -147,6 +146,25 @@ helm-install: $(HELM) ## Install helm chart @$(HELM) template --namespace kyverno charts/kyverno-api | kubectl apply --server-side -f - # @$(HELM) upgrade --install kyverno-api --namespace kyverno --create-namespace --server-side --wait ./charts/kyverno-api +.PHONY: helm-test +helm-test: $(HELM) ## Test helm chart + @echo Test kyverno-api chart... >&2 + @set -e; \ + tmp=$$(mktemp); \ + custom=$$(mktemp); \ + trap 'rm -f "$$tmp" "$$custom"' EXIT; \ + expected=$$(find charts/kyverno-api/templates/crds -name '*.yaml' | wc -l); \ + $(HELM) template kyverno-api charts/kyverno-api > "$$tmp"; \ + $(HELM) template kyverno-api charts/kyverno-api \ + --set labels.test=foo \ + --set annotations.test=bar > "$$custom"; \ + test "$$(grep -c '^kind: CustomResourceDefinition$$' "$$tmp")" -eq "$$expected"; \ + test "$$(grep -c '^kind: CustomResourceDefinition$$' "$$custom")" -eq "$$expected"; \ + test "$$(grep -c '^ labels:$$' "$$tmp")" -eq 0; \ + test "$$(grep -c '^ annotations:$$' "$$tmp")" -eq 0; \ + test "$$(grep -c '^ test: foo$$' "$$custom")" -eq "$$expected"; \ + test "$$(grep -c '^ test: bar$$' "$$custom")" -eq "$$expected" + ################## # VERIFY CODEGEN # ################## diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_deletingpolicies.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_deletingpolicies.yaml index 3efe283..1bd0e02 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_deletingpolicies.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_deletingpolicies.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: deletingpolicies.policies.kyverno.io spec: group: policies.kyverno.io diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_generatingpolicies.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_generatingpolicies.yaml index 0d60353..61eaf76 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_generatingpolicies.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_generatingpolicies.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: generatingpolicies.policies.kyverno.io spec: group: policies.kyverno.io diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_imagevalidatingpolicies.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_imagevalidatingpolicies.yaml index 578cafc..5a70c17 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_imagevalidatingpolicies.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_imagevalidatingpolicies.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: imagevalidatingpolicies.policies.kyverno.io spec: group: policies.kyverno.io diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_mutatingpolicies.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_mutatingpolicies.yaml index 04059f0..df7fe5d 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_mutatingpolicies.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_mutatingpolicies.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: mutatingpolicies.policies.kyverno.io spec: group: policies.kyverno.io diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_namespaceddeletingpolicies.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_namespaceddeletingpolicies.yaml index 69eacaf..cce4fb8 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_namespaceddeletingpolicies.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_namespaceddeletingpolicies.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: namespaceddeletingpolicies.policies.kyverno.io spec: group: policies.kyverno.io diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedgeneratingpolicies.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedgeneratingpolicies.yaml index 7a57565..066dd36 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedgeneratingpolicies.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedgeneratingpolicies.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: namespacedgeneratingpolicies.policies.kyverno.io spec: group: policies.kyverno.io diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedimagevalidatingpolicies.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedimagevalidatingpolicies.yaml index 63bcfcf..27919da 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedimagevalidatingpolicies.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedimagevalidatingpolicies.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: namespacedimagevalidatingpolicies.policies.kyverno.io spec: group: policies.kyverno.io diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedmutatingpolicies.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedmutatingpolicies.yaml index e2b3419..689885d 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedmutatingpolicies.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedmutatingpolicies.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: namespacedmutatingpolicies.policies.kyverno.io spec: group: policies.kyverno.io diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedvalidatingpolicies.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedvalidatingpolicies.yaml index f391b11..fc08ded 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedvalidatingpolicies.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_namespacedvalidatingpolicies.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: namespacedvalidatingpolicies.policies.kyverno.io spec: group: policies.kyverno.io diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_policyexceptions.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_policyexceptions.yaml index 56719c5..5b3e717 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_policyexceptions.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_policyexceptions.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: policyexceptions.policies.kyverno.io spec: group: policies.kyverno.io diff --git a/charts/kyverno-api/templates/crds/policies.kyverno.io_validatingpolicies.yaml b/charts/kyverno-api/templates/crds/policies.kyverno.io_validatingpolicies.yaml index 0660142..f0bfea2 100644 --- a/charts/kyverno-api/templates/crds/policies.kyverno.io_validatingpolicies.yaml +++ b/charts/kyverno-api/templates/crds/policies.kyverno.io_validatingpolicies.yaml @@ -2,10 +2,14 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + {{- if .Values.labels }} labels: {{- include "kyverno-api.labels" . | nindent 4 }} + {{- end }} + {{- if .Values.annotations }} annotations: {{- include "kyverno-api.annotations" . | nindent 4 }} + {{- end }} name: validatingpolicies.policies.kyverno.io spec: group: policies.kyverno.io