
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. - 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: 49614 Change-Id: Ied7ff31b03b0b22d099649c91f712e6f9aafcd63 Signed-off-by: Joshua Reed <joshua.reed@windriver.com>
64 lines
2.1 KiB
Makefile
Executable File
64 lines
2.1 KiB
Makefile
Executable File
#!/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 = ptp-notification
|
|
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: |