@@ -14,6 +14,7 @@ include build/makelib/common.mk
1414include build/makelib/golang.mk
1515include build/makelib/kubebuilder-v2.mk
1616include build/makelib/image.mk
17+ include build/makelib/helm.mk
1718
1819GO_STATIC_PACKAGES = $(GO_PROJECT ) /cmd/mysql-operator $(GO_PROJECT ) /cmd/mysql-operator-sidecar $(GO_PROJECT ) /cmd/orc-helper
1920GO_INTEGRATION_TESTS_SUBDIRS = test/e2e
@@ -48,6 +49,52 @@ TEST_FILTER_PARAM += $(GO_INTEGRATION_TESTS_PARAMS)
4849CRD_DIR := config/crd/bases
4950RBAC_DIR := config/rbac
5051
52+ .PHONY : .kubebuilder.update.chart
53+ .kubebuilder.update.chart : kubebuilder.manifests $(YQ )
54+ @$(INFO ) updating helm RBAC and CRDs from kubebuilder manifests
55+ @rm -rf $(HELM_CHARTS_DIR ) /mysql-operator/crds
56+ @mkdir -p $(HELM_CHARTS_DIR ) /mysql-operator/crds
57+ @set -e; \
58+ for crd in $( wildcard $( CRD_DIR) /* .yaml) ; do \
59+ cp $$ {crd} $(HELM_CHARTS_DIR ) /mysql-operator/crds/ ; \
60+ $(YQ ) e ' .metadata.annotations["helm.sh/hook"]="crd-install"' -i $(HELM_CHARTS_DIR ) /mysql-operator/crds/$$(basename $${crd}) ; \
61+ $(YQ ) e ' .metadata.labels["app"]="mysql-operator"' -i $(HELM_CHARTS_DIR ) /mysql-operator/crds/$$(basename $${crd}) ; \
62+ $(YQ ) e ' del(.metadata.creationTimestamp)' -i $(HELM_CHARTS_DIR ) /mysql-operator/crds/$$(basename $${crd}) ; \
63+ $(YQ ) e ' del(.status)' -i $(HELM_CHARTS_DIR ) /mysql-operator/crds/$$(basename $${crd}) ; \
64+ done
65+ @cp config/rbac/role.yaml $(HELM_CHARTS_DIR ) /mysql-operator/templates/_rbac.yaml
66+ @yq eval-all ' select(fileIndex == 0) * select(filename == "hack/chart-metadata.yaml")' -i $(HELM_CHARTS_DIR ) /mysql-operator/templates/_rbac.yaml hack/chart-metadata.yaml
67+ @yq e ' del(.metadata.creationTimestamp)' -i $(HELM_CHARTS_DIR ) /mysql-operator/templates/_rbac.yaml
68+ @yq e ' .metadata.name="{{ template \"mysql-operator.fullname\" . }}"' -i $(HELM_CHARTS_DIR ) /mysql-operator/templates/_rbac.yaml
69+ @echo ' {{- if .Values.rbac.create }}' > $(HELM_CHARTS_DIR ) /mysql-operator/templates/clusterrole.yaml
70+ @cat $(HELM_CHARTS_DIR ) /mysql-operator/templates/_rbac.yaml >> $(HELM_CHARTS_DIR ) /mysql-operator/templates/clusterrole.yaml
71+ @echo ' {{- end }}' >> $(HELM_CHARTS_DIR ) /mysql-operator/templates/clusterrole.yaml
72+ @rm $(HELM_CHARTS_DIR ) /mysql-operator/templates/_rbac.yaml
73+ @$(OK ) updating helm RBAC and CRDs from kubebuilder manifests
74+ .generate.run : .kubebuilder.update.chart
75+
76+ .PHONY : .helm.publish
77+ .helm.publish :
78+ @$(INFO ) publishing helm charts
79+ @rm -rf $(WORK_DIR ) /charts
80+ @git clone -q
[email protected] :bitpoke/helm-charts.git
$(WORK_DIR ) /charts
81+ @cp $(HELM_OUTPUT_DIR ) /* .tgz $(WORK_DIR ) /charts/docs/
82+ @git -C $(WORK_DIR ) /charts add $(WORK_DIR ) /charts/docs/* .tgz
83+ @git -C $(WORK_DIR ) /charts commit -q -m " Added $( call list-join,$( COMMA) $( SPACE) ,$( foreach c,$( HELM_CHARTS) ,$( c) -v$( HELM_CHART_VERSION) ) ) "
84+ @git -C $(WORK_DIR ) /charts push -q
85+ @$(OK ) publishing helm charts
86+ .publish.run : .helm.publish
87+
88+ .PHONY : .helm.package.prepare.mysql-operator
89+ .helm.package.prepare.mysql-operator : $(YQ )
90+ @$(INFO ) prepare mysql-operator chart $(HELM_CHART_VERSION )
91+ @$(YQ ) e ' .image="$(DOCKER_REGISTRY)/mysql-operator:$(VERSION)"' -i $(HELM_CHARTS_WORK_DIR ) /mysql-operator/values.yaml
92+ @$(YQ ) e ' .sidecarImage="$(DOCKER_REGISTRY)/mysql-operator-sidecar-5.7:$(VERSION)"' -i $(HELM_CHARTS_WORK_DIR ) /mysql-operator/values.yaml
93+ @$(YQ ) e ' .sidecarMysql8Image="$(DOCKER_REGISTRY)/mysql-operator-sidecar-8.0:$(VERSION)"' -i $(HELM_CHARTS_WORK_DIR ) /mysql-operator/values.yaml
94+ @$(YQ ) e ' .orchestrator.image="$(DOCKER_REGISTRY)/mysql-operator-orchestrator:$(VERSION)"' -i $(HELM_CHARTS_WORK_DIR ) /mysql-operator/values.yaml
95+ @$(OK ) prepare mysql-operator chart $(HELM_CHART_VERSION )
96+ .helm.package.run.mysql-operator : .helm.package.prepare.mysql-operator
97+
5198CLUSTER_NAME ?= mysql-operator
5299delete-environment :
53100 -@kind delete cluster --name $(CLUSTER_NAME )
0 commit comments