Skip to content

Commit 3a03479

Browse files
authored
feat(helm): enhance chart versioning for development and stable releases (#523)
Signed-off-by: Marc Nuri <marc@marcnuri.com>
1 parent cd5a70b commit 3a03479

File tree

2 files changed

+32
-8
lines changed

2 files changed

+32
-8
lines changed

.github/workflows/release-helm.yaml

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,20 @@ jobs:
3333
with:
3434
version: '3.19.2'
3535

36-
- name: Extract versions
36+
- name: Determine chart version
3737
id: versions
3838
run: |
39-
CHART_VERSION=$(make helm-print-chart-version)
39+
BASE_VERSION=$(make helm-print-chart-version)
40+
41+
# Use development version for workflow_dispatch, stable version for tags
42+
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
43+
GIT_SHORT_SHA=$(git rev-parse --short HEAD)
44+
CHART_VERSION="${BASE_VERSION}-dev.${GIT_SHORT_SHA}"
45+
echo "::notice::Creating development release: ${CHART_VERSION}"
46+
else
47+
CHART_VERSION="${BASE_VERSION}"
48+
echo "::notice::Creating stable release: ${CHART_VERSION}"
49+
fi
4050
echo "chart_version=$CHART_VERSION" >> $GITHUB_OUTPUT
4151
echo "Chart version: $CHART_VERSION"
4252
@@ -59,15 +69,25 @@ jobs:
5969
run: |
6070
echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ${{ steps.versions.outputs.helm_registry }} -u ${{ github.actor }} --password-stdin
6171
62-
- name: Package Helm chart and push chart to OCI registry
72+
- name: Package and push Helm chart
73+
env:
74+
HELM_CHART_VERSION: ${{ steps.versions.outputs.chart_version }}
6375
run: make helm-push
6476

6577
- name: Verify chart installation
78+
env:
79+
HELM_CHART_VERSION: ${{ steps.versions.outputs.chart_version }}
6680
run: make helm-verify
6781

6882
- name: Generate release summary
6983
run: |
70-
echo "## Helm Chart Release Summary" >> $GITHUB_STEP_SUMMARY
84+
if [[ "${{ steps.versions.outputs.chart_version }}" == *"-dev."* ]]; then
85+
RELEASE_TYPE="Development"
86+
else
87+
RELEASE_TYPE="Stable"
88+
fi
89+
90+
echo "## Helm Chart Release Summary ($RELEASE_TYPE)" >> $GITHUB_STEP_SUMMARY
7191
echo "" >> $GITHUB_STEP_SUMMARY
7292
echo "- **Chart Name:** ${{ steps.versions.outputs.chart_name }}" >> $GITHUB_STEP_SUMMARY
7393
echo "- **Chart Version:** ${{ steps.versions.outputs.chart_version }}" >> $GITHUB_STEP_SUMMARY

build/helm.mk

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
##@ Helm Chart build targets
22

33
HELM_CHART_DIR = ./charts/kubernetes-mcp-server
4-
HELM_CHART_VERSION = $(shell grep '^version:' $(HELM_CHART_DIR)/Chart.yaml | awk '{print $$2}')
4+
HELM_CHART_VERSION_BASE = $(shell grep '^version:' $(HELM_CHART_DIR)/Chart.yaml | awk '{print $$2}')
5+
HELM_CHART_VERSION ?= $(HELM_CHART_VERSION_BASE)
56
HELM_PACKAGE_DIR = ./_output/helm-packages
67
HELM_REGISTRY ?= ghcr.io
78
HELM_REGISTRY_ORG ?= containers
@@ -38,14 +39,17 @@ helm-validate: kubeconform ## Validate Helm chart manifests with kubeconform
3839
helm template test-release $(HELM_CHART_DIR) --set ingress.host=localhost | $(KUBECONFORM) -strict -summary -ignore-missing-schemas
3940

4041
.PHONY: helm-package
41-
helm-package: helm-lint helm-template ## Package the Helm chart
42+
helm-package: helm-lint helm-template ## Package the Helm chart (supports HELM_CHART_VERSION override)
4243
@mkdir -p $(HELM_PACKAGE_DIR)
43-
@echo "Updating appVersion to $(GIT_TAG_VERSION)..."
44-
@sed -i.bak "s/appVersion: .*/appVersion: \"$(GIT_TAG_VERSION)\"/" $(HELM_CHART_DIR)/Chart.yaml
44+
@echo "Updating Chart.yaml for packaging..."
45+
@sed -i.bak -e "s/version: .*/version: $(HELM_CHART_VERSION)/" \
46+
-e "s/appVersion: .*/appVersion: \"$(GIT_TAG_VERSION)\"/" \
47+
$(HELM_CHART_DIR)/Chart.yaml
4548
@echo "Updated Chart.yaml:"
4649
@cat $(HELM_CHART_DIR)/Chart.yaml
4750
helm package $(HELM_CHART_DIR) --destination $(HELM_PACKAGE_DIR)
4851
@mv $(HELM_CHART_DIR)/Chart.yaml.bak $(HELM_CHART_DIR)/Chart.yaml
52+
@echo "Chart packaged as version $(HELM_CHART_VERSION)"
4953

5054
.PHONY: helm-push
5155
helm-push: helm-package ## Push Helm chart to OCI registry (assumes helm registry login has been performed)

0 commit comments

Comments
 (0)