Auto-increment chart versions

Enable auto-versioning of helm charts to ensure the FluxCD
helm controller recognizes chart changes.

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: 50079

Change-Id: I15a7755e39e5136a5a9d9c20ed429bb9e2a8080d
Signed-off-by: Rahul Roshan Kachchap <rahulroshan.kachchap@windriver.com>
This commit is contained in:
Rahul Roshan Kachchap 2024-05-13 04:19:01 -04:00
parent 16db7b80ad
commit 1c3b569e95
36 changed files with 218 additions and 140 deletions

View File

@ -1,2 +1 @@
#stx-sts-silicom-helm
stx-sts-silicom-helm
stx-sts-silicom

View File

@ -1,2 +1,3 @@
helm-charts/upstream/sts-silicom-helm
python3-k8sapp-sts-silicom
stx-sts-silicom-helm
stx-sts-silicom

View File

@ -1,7 +1,7 @@
#
# Copyright 2017 The Openstack-Helm Authors.
# Copyright 2019 The Openstack-Helm Authors.
#
# Copyright (c) 2022 Wind River Systems, Inc.
# Copyright (c) 2022-2024 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
@ -9,8 +9,8 @@
SHELL := /bin/bash
TASK := build
EXCLUDES := helm-toolkit doc tests tools logs tmp
CHARTS := helm-toolkit $(filter-out $(EXCLUDES), $(patsubst %/.,%,$(wildcard */.)))
EXCLUDES := doc tests tools logs tmp
CHARTS := $(filter-out $(EXCLUDES), $(patsubst %/.,%,$(wildcard */.)))
.PHONY: $(EXCLUDES) $(CHARTS)
@ -25,18 +25,16 @@ $(CHARTS):
init-%:
if [ -f $*/Makefile ]; then make -C $*; fi
if [ -f $*/requirements.yaml ]; then helm dep up $*; fi
lint-%: init-%
if [ -d $* ]; then helm lint $*; fi
build-%: lint-%
if [ -d $* ]; then helm package $*; fi
if [ -d $* ]; then helm package --version $(CHART_VERSION) $*; fi
clean:
@echo "Clean all build artifacts"
rm -f */templates/_partials.tpl */templates/_globals.tpl
rm -f *tgz */charts/*tgz */requirements.lock
rm -rf */charts */tmpcharts
%:

View File

@ -0,0 +1,5 @@
sts-silicom-helm (0.0-15) unstable; urgency=medium
* Initial release.
-- Rahul Roshan <rahulroshan.kachchap@windriver.com> Thu, 09 May 2024 02:13:14 +0000

View File

@ -1,18 +1,13 @@
Source: stx-sts-silicom-helm
Source: sts-silicom-helm
Section: libs
Priority: optional
Maintainer: StarlingX Developers <starlingx-discuss@lists.starlingx.io>
Build-Depends: debhelper-compat (= 13),
chartmuseum,
helm,
procps,
python3-k8sapp-sts-silicom,
python3-k8sapp-sts-silicom-wheels,
build-info
helm
Standards-Version: 4.5.1
Homepage: https://www.starlingx.io
Package: stx-sts-silicom-helm
Package: sts-silicom-helm
Section: libs
Architecture: any
Depends: ${misc:Depends},

View File

@ -1,9 +1,9 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: stx-sts-silicom-helm
Upstream-Name: sts-silicom-helm
Source: https://opendev.org/starlingx/app-sts-silicom/
Files: *
Copyright: (c) 2013-2022 Wind River Systems, Inc
Copyright: (c) 2013-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.
@ -23,7 +23,7 @@ License: Apache-2
# 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: 2022 Wind River Systems, Inc
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.

View File

@ -0,0 +1,3 @@
0001-Fix-whitespace-chomping-in-services-manifest.patch
0002-Add-imagePullSecrets-to-service-account.patch
0003-Add-imagePullSecrets-to-daemonset.patch

View File

@ -0,0 +1,30 @@
#!/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 sts-silicom
# Copy sts-silicom charts
cp -r charts/* sts-silicom
cp debian/Makefile sts-silicom
cd sts-silicom && make CHART_VERSION=$(CHART_VERSION) sts-silicom
override_dh_auto_install:
# Install the app tar file.
install -d -m 755 $(APP_FOLDER)
install -p -D -m 755 sts-silicom/sts-silicom*.tgz $(APP_FOLDER)
override_dh_auto_test:

View File

@ -0,0 +1 @@
usr/lib/helm/*

View File

@ -0,0 +1,14 @@
---
debname: sts-silicom-helm
debver: 0.0-15
src_path: sts-silicom-helm
dl_path:
name: helm-charts-sts-silicom-727b7ca.tar.gz
url: https://github.com/silicom-ltd/STS_HelmCharts/archive/727b7ca0afee06c1b93fec8ad518c6b43095e49d.tar.gz
sha256sum: f9af6997d39c1a9a4d2983a6b8162c1cab8768ca5d0b70c1b796bafd097c6621
revision:
dist: $STX_DIST
stx_patch: 2
GITREVCOUNT:
SRC_DIR: ${MY_REPO}/stx/app-sts-silicom/helm-charts/upstream/sts-silicom-helm
BASE_SRCREV: 16db7b80ad66352405ccf053f1363789f8ad7fb3

View File

@ -1,7 +1,7 @@
#
# Copyright 2017 The Openstack-Helm Authors.
# Copyright 2019 The Openstack-Helm Authors.
#
# Copyright (c) 2022 Wind River Systems, Inc.
# Copyright (c) 2022-2024 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
@ -9,8 +9,8 @@
SHELL := /bin/bash
TASK := build
EXCLUDES := helm-toolkit doc tests tools logs tmp
CHARTS := helm-toolkit $(filter-out $(EXCLUDES), $(patsubst %/.,%,$(wildcard */.)))
EXCLUDES := doc tests tools logs tmp
CHARTS := $(filter-out $(EXCLUDES), $(patsubst %/.,%,$(wildcard */.)))
.PHONY: $(EXCLUDES) $(CHARTS)
@ -25,18 +25,16 @@ $(CHARTS):
init-%:
if [ -f $*/Makefile ]; then make -C $*; fi
if [ -f $*/requirements.yaml ]; then helm dep up $*; fi
lint-%: init-%
if [ -d $* ]; then helm lint $*; fi
build-%: lint-%
if [ -d $* ]; then helm package $*; fi
if [ -d $* ]; then helm package --version $(CHART_VERSION) $*; fi
clean:
@echo "Clean all build artifacts"
rm -f */templates/_partials.tpl */templates/_globals.tpl
rm -f *tgz */charts/*tgz */requirements.lock
rm -rf */charts */tmpcharts
%:

View File

@ -1,5 +0,0 @@
stx-sts-silicom-helm (1.0-1) unstable; urgency=medium
* Initial release.
-- Steven Webster <steven.webster@windriver.com> Thu, 31 Mar 2022 08:40:22 +0000

View File

@ -1,76 +0,0 @@
#!/usr/bin/make -f
# export DH_VERBOSE = 1
export ROOT = debian/tmp
export APP_FOLDER = $(ROOT)/usr/local/share/applications/helm
export DEB_VERSION = $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')
export RELEASE = $(shell cat /etc/build.info | grep SW_VERSION | cut -d'"' -f2)
export REVISION = $(shell echo $(DEB_VERSION) | cut -f 4 -d '.')
export STS_SILICOM_PKG="helm-charts-sts-silicom-727b7ca.tar.gz"
export APP_NAME = sts-silicom
export APP_VERSION = $(RELEASE)-$(REVISION)
export APP_TARBALL_FLUXCD = $(APP_NAME)-$(APP_VERSION).tgz
export HELM_REPO = stx-platform
export STAGING = staging
%:
dh $@
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 sts-silicom chart
rm -rf fluxcd
mkdir -p fluxcd
tar -C fluxcd -xf $(STS_SILICOM_PKG)
# Apply patches
cd fluxcd/helm-charts/ && patch --no-backup-if-mismatch --fuzz=0 -p1 < ../../files/0001-Fix-whitespace-chomping-in-services-manifest.patch
cd fluxcd/helm-charts/ && patch --no-backup-if-mismatch --fuzz=0 -p1 < ../../files/0002-Add-imagePullSecrets-to-service-account.patch
cd fluxcd/helm-charts/ && patch --no-backup-if-mismatch --fuzz=0 -p1 < ../../files/0003-Add-imagePullSecrets-to-daemonset.patch
# Build the charts
cd fluxcd/helm-charts/ && export HELM=helm && $(MAKE) chart
# Terminate the helm chart server.
pkill chartmuseum
# Setup the staging directory.
mkdir -p $(STAGING)/charts
# Copy the fluxcd manifests
cp -R fluxcd-manifests/ $(STAGING)/
# Copy the built chart to staging
cp fluxcd/helm-charts/output/sts-silicom-*.tgz $(STAGING)/charts/
# Populate metadata.
cp files/metadata.yaml $(STAGING)
sed -i 's/APP_REPLACE_NAME/$(APP_NAME)/g' $(STAGING)/metadata.yaml
sed -i 's/APP_REPLACE_VERSION/$(APP_VERSION)/g' $(STAGING)/metadata.yaml
sed -i 's/HELM_REPLACE_REPO/$(HELM_REPO)/g' $(STAGING)/metadata.yaml
# Copy the plugins: installed in the buildroot
mkdir -p $(STAGING)/plugins
cp /plugins/*.whl $(STAGING)/plugins
# Generate checksum file and package the tarball
cd $(STAGING) && find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5
tar -zcf $(APP_TARBALL_FLUXCD) -C $(STAGING)/ .
# Cleanup staging
rm -rf $(STAGING)
override_dh_auto_install:
# Install the app tar file.
install -d -m 755 $(APP_FOLDER)
install -p -D -m 755 $(APP_TARBALL_FLUXCD) $(APP_FOLDER)
override_dh_auto_test:
override_dh_usrlocal:

View File

@ -1,14 +0,0 @@
---
debname: stx-sts-silicom-helm
debver: 1.0-1
src_path: stx-sts-silicom-helm
dl_files:
helm-charts-sts-silicom-727b7ca.tar.gz:
topdir: helm-charts
url: https://github.com/silicom-ltd/STS_HelmCharts/archive/727b7ca0afee06c1b93fec8ad518c6b43095e49d.tar.gz
md5sum: 8d68d6681428b7a61492ec38f67c52a7
revision:
dist: $STX_DIST
GITREVCOUNT:
SRC_DIR: ${MY_REPO}/stx/app-sts-silicom
BASE_SRCREV: e63bc5371c914c6e0b7de149f3d6bc24bb3b0dc9

View File

@ -1,3 +0,0 @@
apiVersion: v1
entries: {}
generated: 2019-01-07T12:33:46.098166523-06:00

View File

@ -1,12 +0,0 @@
apiVersion: v1
generated: 2019-01-02T15:19:36.215111369-06:00
repositories:
- caFile: ""
cache: /builddir/.helm/repository/cache/local-index.yaml
certFile: ""
keyFile: ""
name: local
password: ""
url: http://127.0.0.1:8879/charts
username: ""

View File

@ -0,0 +1,11 @@
stx-sts-silicom (1.0-2) unstable; urgency=medium
* Update package to automatically version itself.
-- Rahul Roshan <rahulroshan.kachchap@windriver.com> Thu, 09 May 2024 02:13:14 +0000
stx-sts-silicom (1.0-1) unstable; urgency=medium
* Initial release.
-- Steven Webster <steven.webster@windriver.com> Thu, 31 Mar 2022 08:40:22 +0000

View File

@ -0,0 +1,18 @@
Source: stx-sts-silicom
Section: libs
Priority: optional
Maintainer: StarlingX Developers <starlingx-discuss@lists.starlingx.io>
Build-Depends: debhelper-compat (= 13),
sts-silicom-helm,
python3-k8sapp-sts-silicom-wheels,
build-info
Standards-Version: 4.5.1
Homepage: https://www.starlingx.io
Package: stx-sts-silicom
Section: libs
Architecture: any
Depends: ${misc:Depends},
curl
Description: StarlingX Sts-Silicom Helm Charts
This package contains manifests for the Sts Silicom application.

View File

@ -0,0 +1,41 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: stx-sts-silicom
Source: https://opendev.org/starlingx/app-sts-silicom/
Files: *
Copyright: (c) 2013-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'.

View File

@ -0,0 +1,64 @@
#!/usr/bin/make -f
# export DH_VERBOSE = 1
export ROOT = debian/tmp
export APP_FOLDER = $(ROOT)/usr/local/share/applications/helm
export DEB_VERSION = $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')
export RELEASE = $(shell cat /etc/build.info | grep SW_VERSION | cut -d'"' -f2)
export REVISION = $(shell echo $(DEB_VERSION) | cut -f 4 -d '.')
export APP_NAME = sts-silicom
export APP_VERSION = $(RELEASE)-$(REVISION)
export APP_TARBALL = $(APP_NAME)-$(APP_VERSION).tgz
export HELM_FOLDER = /usr/lib/helm
export HELM_REPO = stx-platform
export STAGING = staging
%:
dh $@
override_dh_auto_build:
# Setup the staging directory.
mkdir -p $(STAGING)
cp files/metadata.yaml $(STAGING)
cp -Rv fluxcd-manifests $(STAGING)
mkdir -p $(STAGING)/charts
cp /usr/lib/helm/*.tgz $(STAGING)/charts
# 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.
sed -i 's/APP_REPLACE_NAME/$(APP_NAME)/g' $(STAGING)/metadata.yaml
sed -i 's/APP_REPLACE_VERSION/$(APP_VERSION)/g' $(STAGING)/metadata.yaml
sed -i 's/HELM_REPLACE_REPO/$(HELM_REPO)/g' $(STAGING)/metadata.yaml
# Copy the plugins: installed in the buildroot
mkdir -p $(STAGING)/plugins
cp /plugins/*.whl $(STAGING)/plugins
# Create the app package.
cd $(STAGING) && find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5
tar cfz $(APP_TARBALL) -C $(STAGING)/ .
# Cleanup staging
rm -rf $(STAGING)
override_dh_auto_install:
# Install the app tar file.
install -d -m 755 $(APP_FOLDER)
install -p -D -m 755 $(APP_TARBALL) $(APP_FOLDER)
override_dh_auto_test:
override_dh_usrlocal:

View File

@ -0,0 +1 @@
3.0 (quilt)

View File

@ -0,0 +1,9 @@
---
debname: stx-sts-silicom
debver: 1.0-2
src_path: stx-sts-silicom
revision:
dist: $STX_DIST
GITREVCOUNT:
SRC_DIR: ${MY_REPO}/stx/app-sts-silicom
BASE_SRCREV: e63bc5371c914c6e0b7de149f3d6bc24bb3b0dc9

View File

@ -15,7 +15,7 @@ spec:
chart:
spec:
chart: sts-silicom
version: 0.0.12
version: REPLACE_HELM_CHART_VERSION
sourceRef:
kind: HelmRepository
name: stx-platform
@ -33,4 +33,4 @@ spec:
valuesKey: sts-silicom-static-overrides.yaml
- kind: Secret
name: sts-silicom-system-overrides
valuesKey: sts-silicom-system-overrides.yaml
valuesKey: sts-silicom-system-overrides.yaml