Auto-increment chart versions
Enable auto-versioning of helm charts to ensure the FluxCD helm controller recognizes chart changes. To guarantee the helm chart version is incremented when a helm chart change is submitted, the following is implemented: - Provide a top level hierarchy for helm charts to differentiate between upstream and custom charts: helm-charts/{custom,upstream} - Arrange exiting helm chart in appropriate helm-charts location. Custom for helm. Charts built and maintained in this repository. Upstream for directly used and/or directly used plus patched. - stx-APP-helm now contains only manifests and final application packaging rules. No custom helm charts should be delivered here. - Use StarlingX debian git revcount packaging mechanisms to derive the semver BUILD version for upstream helm charts which maintains the upstream chart version and adds a versioned BUILD extension. <version core> ::= <major> "." <minor> "." <patch> <valid semver> ::= <version core> "+" <build> Chart version (MAJOR.MINOR.PATCH+STX.REV) is passed to 'helm package' command to force the version, where REV == 'git revcount' - Establish a new package(s) for the custom or upstream helm chart(s). - Enforce a baseline version for all helm charts; eg 'APP-helm'. Maintain current rev counts for all new packages, where applicable. - Update 'stx-APP-helm' to: - Update the build dependencies to include the new helm chart package and remove dependency on helm - Update the rules to remove building the dependency APP helm chart(s) and automatically update the chart versions in the FluxCD helmrelease.yaml files. Test Plan: PASS - Build all packages generating an application tarball verifying all versions on the charts and application make sense. PASS - Introduce temporary chart changes and ensure that the versions increment as expected. PASS - Validate basic application lifecycle operations: upload/apply/remove/delete. Story: 2010929 Task: 49602 Change-Id: Idd2cc177c8f4217583470ebff24f7ce5e7bb01ff Signed-off-by: Joshua Reed <joshua.reed@windriver.com>
This commit is contained in:
@@ -1,2 +1,3 @@
|
|||||||
|
helm-charts/upstream/cert-manager-helm
|
||||||
python3-k8sapp-cert-manager
|
python3-k8sapp-cert-manager
|
||||||
stx-cert-manager-helm
|
stx-cert-manager-helm
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright 2017 The Openstack-Helm Authors.
|
# Copyright 2017 The Openstack-Helm Authors.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2020 Wind River Systems, Inc.
|
# Copyright (c) 2019,2024 Wind River Systems, Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
SHELL := /bin/bash
|
SHELL := /bin/bash
|
||||||
TASK := build
|
TASK := build
|
||||||
|
|
||||||
EXCLUDES := helm-toolkit doc tests tools logs tmp
|
EXCLUDES := doc tests tools logs tmp
|
||||||
CHARTS := helm-toolkit $(filter-out $(EXCLUDES), $(patsubst %/.,%,$(wildcard */.)))
|
CHARTS := $(filter-out $(EXCLUDES), $(patsubst %/.,%,$(wildcard */.)))
|
||||||
|
|
||||||
.PHONY: $(EXCLUDES) $(CHARTS)
|
.PHONY: $(EXCLUDES) $(CHARTS)
|
||||||
|
|
||||||
@@ -25,18 +25,16 @@ $(CHARTS):
|
|||||||
|
|
||||||
init-%:
|
init-%:
|
||||||
if [ -f $*/Makefile ]; then make -C $*; fi
|
if [ -f $*/Makefile ]; then make -C $*; fi
|
||||||
if [ -f $*/requirements.yaml ]; then helm dep up $*; fi
|
|
||||||
|
|
||||||
lint-%: init-%
|
lint-%: init-%
|
||||||
if [ -d $* ]; then helm lint $*; fi
|
if [ -d $* ]; then helm lint $*; fi
|
||||||
|
|
||||||
build-%: lint-%
|
build-%: lint-%
|
||||||
if [ -d $* ]; then helm package $*; fi
|
if [ -d $* ]; then helm package --version $(CHART_VERSION) $*; fi
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@echo "Clean all build artifacts"
|
@echo "Clean all build artifacts"
|
||||||
rm -f */templates/_partials.tpl */templates/_globals.tpl
|
rm -f */templates/_partials.tpl */templates/_globals.tpl
|
||||||
rm -f *tgz */charts/*tgz */requirements.lock
|
|
||||||
rm -rf */charts */tmpcharts
|
rm -rf */charts */tmpcharts
|
||||||
|
|
||||||
%:
|
%:
|
@@ -0,0 +1 @@
|
|||||||
|
usr/lib/helm/*
|
@@ -0,0 +1,5 @@
|
|||||||
|
cert-manager-helm (1.13-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Initial release matching helm chart version used.
|
||||||
|
|
||||||
|
-- Joshua Reed <joshua.reed@windriver.com> Tue, 21 Feb 2024 14:54:00 +0000
|
@@ -0,0 +1,15 @@
|
|||||||
|
Source: cert-manager-helm
|
||||||
|
Section: libs
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: StarlingX Developers <starlingx-discuss@lists.starlingx.io>
|
||||||
|
Build-Depends: debhelper-compat (= 13),
|
||||||
|
helm
|
||||||
|
Standards-Version: 4.5.1
|
||||||
|
Homepage: https://www.starlingx.io
|
||||||
|
|
||||||
|
Package: cert-manager-helm
|
||||||
|
Section: libs
|
||||||
|
Architecture: any
|
||||||
|
Depends: ${misc:Depends}
|
||||||
|
Description: StarlingX Cert Manager Helm Chart
|
||||||
|
This package contains helm charts for the Cert Manager application.
|
@@ -0,0 +1,41 @@
|
|||||||
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
|
Upstream-Name: cert-manager-helm
|
||||||
|
Source: https://opendev.org/starlingx/cert-manager-armada-app/
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: (c) 2024 Wind River Systems, Inc
|
||||||
|
License: Apache-2
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
.
|
||||||
|
https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
.
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
.
|
||||||
|
On Debian-based systems the full text of the Apache version 2.0 license
|
||||||
|
can be found in `/usr/share/common-licenses/Apache-2.0'.
|
||||||
|
|
||||||
|
# If you want to use GPL v2 or later for the /debian/* files use
|
||||||
|
# the following clauses, or change it to suit. Delete these two lines
|
||||||
|
Files: debian/*
|
||||||
|
Copyright: 2024 Wind River Systems, Inc
|
||||||
|
License: Apache-2
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
.
|
||||||
|
https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
.
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
.
|
||||||
|
On Debian-based systems the full text of the Apache version 2.0 license
|
||||||
|
can be found in `/usr/share/common-licenses/Apache-2.0'.
|
@@ -0,0 +1 @@
|
|||||||
|
0001-Patch-for-chartyaml-cm-v1.13.1.patch
|
@@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
# export DH_VERBOSE = 1
|
||||||
|
|
||||||
|
export DEB_VERSION = $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')
|
||||||
|
export PATCH_VERSION = $(shell echo $(DEB_VERSION) | cut -f 4 -d '.')
|
||||||
|
export CHART_BASE_VERSION = $(shell echo $(DEB_VERSION) | sed 's/-/./' | cut -d '.' -f 1-3)
|
||||||
|
export CHART_VERSION = v$(CHART_BASE_VERSION)+STX.$(PATCH_VERSION)
|
||||||
|
|
||||||
|
export ROOT = debian/tmp
|
||||||
|
export APP_FOLDER = $(ROOT)/usr/lib/helm
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@
|
||||||
|
|
||||||
|
override_dh_auto_build:
|
||||||
|
|
||||||
|
mkdir -p cert-manager
|
||||||
|
|
||||||
|
# Copy cert-manager charts
|
||||||
|
cp -r deploy/charts/* cert-manager
|
||||||
|
cp cert-manager/cert-manager/Chart.template.yaml cert-manager/cert-manager/Chart.yaml
|
||||||
|
|
||||||
|
# Copy CRD yaml files to templates
|
||||||
|
cp deploy/crds/*.yaml cert-manager/cert-manager/templates
|
||||||
|
|
||||||
|
cp Makefile cert-manager
|
||||||
|
|
||||||
|
cd cert-manager && make CHART_VERSION=$(CHART_VERSION) cert-manager
|
||||||
|
|
||||||
|
override_dh_auto_install:
|
||||||
|
# Install the app tar file.
|
||||||
|
install -d -m 755 $(APP_FOLDER)
|
||||||
|
install -p -D -m 755 cert-manager/cert-manager*.tgz $(APP_FOLDER)
|
||||||
|
|
||||||
|
override_dh_auto_test:
|
@@ -0,0 +1 @@
|
|||||||
|
3.0 (quilt)
|
15
helm-charts/upstream/cert-manager-helm/debian/meta_data.yaml
Normal file
15
helm-charts/upstream/cert-manager-helm/debian/meta_data.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
debname: cert-manager-helm
|
||||||
|
debver: 1.13-1
|
||||||
|
dl_path:
|
||||||
|
name: cert-manager-helm-1.13.1.tar.gz
|
||||||
|
url: https://github.com/cert-manager/cert-manager/archive/refs/tags/v1.13.1.tar.gz
|
||||||
|
sha256sum: e4a6dc4f937742ea48b102118abd509b647bc96e82634d54db17a5d1126e169c
|
||||||
|
src_files:
|
||||||
|
- cert-manager-helm/files/Makefile
|
||||||
|
revision:
|
||||||
|
dist: $STX_DIST
|
||||||
|
stx_patch: 0
|
||||||
|
GITREVCOUNT:
|
||||||
|
BASE_SRCREV: 1008d7e9815526b72ad2587422764b826a3d0c5b
|
||||||
|
SRC_DIR: ${MY_REPO}/stx/cert-manager-armada-app/helm-charts/upstream/cert-manager-helm
|
@@ -3,10 +3,8 @@ Section: libs
|
|||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: StarlingX Developers <starlingx-discuss@lists.starlingx.io>
|
Maintainer: StarlingX Developers <starlingx-discuss@lists.starlingx.io>
|
||||||
Build-Depends: debhelper-compat (= 13),
|
Build-Depends: debhelper-compat (= 13),
|
||||||
chartmuseum,
|
|
||||||
helm,
|
helm,
|
||||||
procps,
|
cert-manager-helm,
|
||||||
python3-k8sapp-cert-manager,
|
|
||||||
python3-k8sapp-cert-manager-wheels,
|
python3-k8sapp-cert-manager-wheels,
|
||||||
build-info
|
build-info
|
||||||
Standards-Version: 4.5.1
|
Standards-Version: 4.5.1
|
||||||
|
@@ -8,52 +8,35 @@ export DEB_VERSION = $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2
|
|||||||
export RELEASE = $(shell cat /etc/build.info | grep SW_VERSION | cut -d'"' -f2)
|
export RELEASE = $(shell cat /etc/build.info | grep SW_VERSION | cut -d'"' -f2)
|
||||||
export REVISION = $(shell echo $(DEB_VERSION) | cut -f 4 -d '.')
|
export REVISION = $(shell echo $(DEB_VERSION) | cut -f 4 -d '.')
|
||||||
|
|
||||||
|
|
||||||
export APP_NAME = cert-manager
|
export APP_NAME = cert-manager
|
||||||
export APP_VERSION = $(RELEASE)-$(REVISION)
|
export APP_VERSION = $(RELEASE)-$(REVISION)
|
||||||
export APP_TARBALL = $(APP_NAME)-$(APP_VERSION).tgz
|
export APP_TARBALL = $(APP_NAME)-$(APP_VERSION).tgz
|
||||||
|
export HELM_FOLDER = /usr/lib/helm
|
||||||
export HELM_REPO = stx-platform
|
export HELM_REPO = stx-platform
|
||||||
export STAGING = staging
|
export STAGING = staging
|
||||||
|
|
||||||
export PATCH_1 = 0001-Patch-for-chartyaml-cm-v1.13.1.patch
|
|
||||||
export CM_VERSION = 1.13.1
|
|
||||||
|
|
||||||
%:
|
%:
|
||||||
dh $@
|
dh $@
|
||||||
|
|
||||||
override_dh_auto_build:
|
override_dh_auto_build:
|
||||||
# Host a server for the helm charts.
|
|
||||||
chartmuseum --debug --port=8879 --context-path='/charts' --storage="local" --storage-local-rootdir="." &
|
|
||||||
sleep 2
|
|
||||||
helm repo add local http://localhost:8879/charts
|
|
||||||
|
|
||||||
# Extract the cert-manager chart
|
|
||||||
rm -rf fluxcd
|
|
||||||
mkdir -p fluxcd
|
|
||||||
# Extract the upstream source
|
|
||||||
tar -C fluxcd -xf helm-charts-certmanager-$(CM_VERSION).tar.gz
|
|
||||||
|
|
||||||
# Apply patches with our modifications
|
|
||||||
cp files/$(PATCH_1) fluxcd/helm-charts
|
|
||||||
cd fluxcd/helm-charts ; \
|
|
||||||
patch -p1 < $(PATCH_1) ; \
|
|
||||||
# Copy CRD yaml files to templates ; \
|
|
||||||
cp deploy/crds/*.yaml deploy/charts/cert-manager/templates/ ; \
|
|
||||||
|
|
||||||
# Make the updated cert-manager helm-chart
|
|
||||||
cp files/Makefile fluxcd/helm-charts/deploy/charts
|
|
||||||
cd fluxcd/helm-charts/deploy/charts && $(MAKE) cert-manager
|
|
||||||
cd fluxcd/helm-charts/deploy/charts && mv *.tgz $(APP_TARBALL)
|
|
||||||
|
|
||||||
# Terminate the helm chart server.
|
|
||||||
pkill chartmuseum
|
|
||||||
|
|
||||||
# Setup the staging directory.
|
# Setup the staging directory.
|
||||||
mkdir -p $(STAGING)
|
mkdir -p $(STAGING)
|
||||||
cp files/metadata.yaml $(STAGING)
|
cp files/metadata.yaml $(STAGING)
|
||||||
|
cp -Rv fluxcd-manifests $(STAGING)
|
||||||
mkdir -p $(STAGING)/charts
|
mkdir -p $(STAGING)/charts
|
||||||
cp fluxcd/helm-charts/deploy/charts/cert*.tgz $(STAGING)/charts
|
cp /usr/lib/helm/*.tgz $(STAGING)/charts
|
||||||
cp -R fluxcd-manifests/ $(STAGING)/
|
|
||||||
|
# Adjust the helmrelease yamls based on the chart versions
|
||||||
|
for c in $(STAGING)/charts/*; do \
|
||||||
|
chart=$$(basename $$c .tgz); \
|
||||||
|
chart_name=$${chart%-*}; \
|
||||||
|
chart_version=$${chart##*-}; \
|
||||||
|
echo "Found $$chart; name: $$chart_name, version: $$chart_version"; \
|
||||||
|
chart_manifest=$$(find $(STAGING)/fluxcd-manifests -name helmrelease.yaml -exec grep -q "chart:.*$$chart_name" {} \; -print); \
|
||||||
|
echo "Updating manifest: $$chart_manifest"; \
|
||||||
|
sed -i "s/REPLACE_HELM_CHART_VERSION/$$chart_version/g" $$chart_manifest; \
|
||||||
|
grep version $$chart_manifest; \
|
||||||
|
done
|
||||||
|
|
||||||
# Populate metadata.
|
# Populate metadata.
|
||||||
sed -i 's/APP_REPLACE_NAME/$(APP_NAME)/g' $(STAGING)/metadata.yaml
|
sed -i 's/APP_REPLACE_NAME/$(APP_NAME)/g' $(STAGING)/metadata.yaml
|
||||||
@@ -64,9 +47,9 @@ override_dh_auto_build:
|
|||||||
mkdir -p $(STAGING)/plugins
|
mkdir -p $(STAGING)/plugins
|
||||||
cp /plugins/*.whl $(STAGING)/plugins
|
cp /plugins/*.whl $(STAGING)/plugins
|
||||||
|
|
||||||
# Generate checksum file and package the tarball
|
# Create the app package.
|
||||||
cd $(STAGING) && find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5
|
cd $(STAGING) && find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5
|
||||||
tar -zcf $(APP_TARBALL) -C $(STAGING)/ .
|
tar cfz $(APP_TARBALL) -C $(STAGING)/ .
|
||||||
|
|
||||||
# Cleanup staging
|
# Cleanup staging
|
||||||
rm -rf $(STAGING)
|
rm -rf $(STAGING)
|
||||||
|
@@ -2,11 +2,6 @@
|
|||||||
debname: stx-cert-manager-helm
|
debname: stx-cert-manager-helm
|
||||||
debver: 1.0-1
|
debver: 1.0-1
|
||||||
src_path: stx-cert-manager-helm
|
src_path: stx-cert-manager-helm
|
||||||
dl_files:
|
|
||||||
helm-charts-certmanager-1.13.1.tar.gz:
|
|
||||||
topdir: helm-charts
|
|
||||||
url: https://github.com/cert-manager/cert-manager/archive/refs/tags/v1.13.1.tar.gz
|
|
||||||
sha256sum: e4a6dc4f937742ea48b102118abd509b647bc96e82634d54db17a5d1126e169c
|
|
||||||
revision:
|
revision:
|
||||||
dist: $STX_DIST
|
dist: $STX_DIST
|
||||||
stx_patch: 28
|
stx_patch: 28
|
||||||
|
@@ -1,3 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
entries: {}
|
|
||||||
generated: 2019-01-07T12:33:46.098166523-06:00
|
|
@@ -15,7 +15,7 @@ spec:
|
|||||||
chart:
|
chart:
|
||||||
spec:
|
spec:
|
||||||
chart: cert-manager
|
chart: cert-manager
|
||||||
version: 1.13.1
|
version: REPLACE_HELM_CHART_VERSION
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: stx-platform
|
name: stx-platform
|
||||||
|
Reference in New Issue
Block a user