Skip to content

Commit d62f2fd

Browse files
committed
Publish helm charts from CI
1 parent 76f870e commit d62f2fd

34 files changed

+65
-16
lines changed

.drone.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,12 @@ workspace:
1111

1212
steps:
1313
- name: git
14-
pull: default
1514
image: plugins/git
1615
settings:
1716
depth: 0
1817
tags: true
1918

2019
- name: install dependencies
21-
pull: always
2220
image: docker.io/bitpoke/build:v0.5.0
2321
commands:
2422
- make -j4 build.tools
@@ -74,7 +72,6 @@ workspace:
7472

7573
steps:
7674
- name: git
77-
pull: default
7875
image: plugins/git
7976
settings:
8077
depth: 0
@@ -94,10 +91,16 @@ steps:
9491
from_secret: DOCKER_USERNAME
9592
DOCKER_PASSWORD:
9693
from_secret: DOCKER_PASSWORD
94+
SSH_KEY:
95+
from_secret: SSH_KEY
9796
# make build system happy by setting a branch name on tags
9897
BRANCH_NAME: release-${DRONE_TAG}
9998
commands:
10099
- /usr/local/bin/setup-credentials-helper.sh
100+
- git config --global user.email "[email protected]"
101+
- git config --global user.name "Bitpoke Bot"
102+
- git config --global push.default current
103+
- ssh-keyscan -H github.com > /etc/ssh/ssh_known_hosts
101104
- make publish
102105

103106
services:
@@ -126,7 +129,6 @@ workspace:
126129

127130
steps:
128131
- name: git
129-
pull: default
130132
image: plugins/git
131133
settings:
132134
depth: 0

Makefile

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ include build/makelib/common.mk
1414
include build/makelib/golang.mk
1515
include build/makelib/kubebuilder-v2.mk
1616
include build/makelib/image.mk
17+
include build/makelib/helm.mk
1718

1819
GO_STATIC_PACKAGES = $(GO_PROJECT)/cmd/mysql-operator $(GO_PROJECT)/cmd/mysql-operator-sidecar $(GO_PROJECT)/cmd/orc-helper
1920
GO_INTEGRATION_TESTS_SUBDIRS = test/e2e
@@ -48,6 +49,52 @@ TEST_FILTER_PARAM += $(GO_INTEGRATION_TESTS_PARAMS)
4849
CRD_DIR := config/crd/bases
4950
RBAC_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+
5198
CLUSTER_NAME ?= mysql-operator
5299
delete-environment:
53100
-@kind delete cluster --name $(CLUSTER_NAME)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)