Auto-increment Harbor Charts Version

The current commit enables helm auto-versioning to the harbor
charts.

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

Change-Id: I646afd509ef0d3ba7b0955028898d345f3149c3d
Signed-off-by: Jagatguru Prasad Mishra <jagatguruprasad.mishra@windriver.com>
This commit is contained in:
Jagatguru Prasad Mishra
2024-04-25 06:31:52 -04:00
parent e097b7cfda
commit 2f6f8a46d4
20 changed files with 141 additions and 68 deletions

View File

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

View File

@@ -0,0 +1,5 @@
harbor-helm (1.12-1) unstable; urgency=medium
* Initial release.
-- Jagatguru Prasad Mishra <jagatguruprasad.mishra@windriver.com> Thu, 25 Apr 2024 03:39:52 -0400

View File

@@ -0,0 +1,16 @@
Source: harbor-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: harbor-helm
Section: libs
Architecture: any
Depends: ${misc:Depends}
Description: StarlingX harbor Application Helm Charts
This package contains helm charts for the harbor application.

View File

@@ -0,0 +1,41 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: harbor-helm
Source: https://opendev.org/starlingx/app-harbor/
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'.

View File

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

View File

@@ -0,0 +1 @@
0001-AddNodeAffinityToPods.patch

View File

@@ -0,0 +1,26 @@
#!/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 = $(CHART_BASE_VERSION)+STX.$(PATCH_VERSION)
export ROOT = debian/tmp
export APP_FOLDER = $(ROOT)/usr/lib/helm
%:
dh $@
override_dh_auto_build:
# Move harbor source
mkdir -p harbor
mv $(shell ls -1 | egrep -v 'Makefile|debian' | tr '\n' ' ') harbor
# Create the TGZ file.
make CHART_VERSION=$(CHART_VERSION) harbor
override_dh_auto_install:
# Install the app tar file.
install -d -m 755 $(APP_FOLDER)
install -p -D -m 755 harbor*.tgz $(APP_FOLDER)
override_dh_auto_test:

View File

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

View File

@@ -0,0 +1,15 @@
---
debname: harbor-helm
debver: 1.12-1
dl_path:
name: harbor-1.12.0.tar.gz
url: https://github.com/goharbor/harbor-helm/archive/refs/tags/v1.12.0.tar.gz
sha256sum: 0a132e920b2861db46fdc2d5dae05df4fb4a27b22c9fe679ae63e99cbd2070b8
src_files:
- harbor-helm/files/Makefile
revision:
dist: $STX_DIST
stx_patch: 0
GITREVCOUNT:
SRC_DIR: ${MY_REPO}/stx/app-harbor/helm-charts/upstream/harbor-helm
BASE_SRCREV: e097b7cfda6e1258151c9143f274bebec31335c9

View File

@@ -1,7 +1,7 @@
# #
# Copyright 2017 The Openstack-Helm Authors. # Copyright 2017 The Openstack-Helm Authors.
# #
# Copyright (c) 2019 Wind River Systems, Inc. # Copyright (c) 2024 Wind River Systems, Inc.
# #
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
# #
@@ -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
%: %:

View File

@@ -1,3 +1,9 @@
stx-harbor-helm (1.0-2) unstable; urgency=medium
* Update package to automatically version itself.
-- Jagatguru Prasad Mishra <jagatguruprasad.mishra@windriver.com> Thu, 25 Apr 2024 05:41:49 +0000
stx-harbor-helm (1.0-1) unstable; urgency=medium stx-harbor-helm (1.0-1) unstable; urgency=medium
* Initial release. * Initial release.

View File

@@ -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, harbor-helm,
python3-k8sapp-harbor,
python3-k8sapp-harbor-wheels, python3-k8sapp-harbor-wheels,
build-info build-info
Standards-Version: 4.5.1 Standards-Version: 4.5.1

View File

@@ -3,7 +3,7 @@ Upstream-Name: stx-harbor-helm
Source: https://opendev.org/starlingx/app-harbor/ Source: https://opendev.org/starlingx/app-harbor/
Files: * Files: *
Copyright: (c) 2013-2023 Wind River Systems, Inc Copyright: (c) 2013-2024 Wind River Systems, Inc
License: Apache-2 License: Apache-2
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with 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 # 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 # the following clauses, or change it to suit. Delete these two lines
Files: debian/* Files: debian/*
Copyright: 2021 Wind River Systems, Inc Copyright: 2024 Wind River Systems, Inc
License: Apache-2 License: Apache-2
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@@ -8,11 +8,10 @@ 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 HARBOR_PKG="helm-charts-harbor-v1.12.0.tar.gz"
export HARBOR_PKG_TGZ= "helm-charts-harbor-v1.12.0.tgz"
export APP_NAME = harbor export APP_NAME = harbor
export APP_VERSION = $(RELEASE)-$(REVISION) export APP_VERSION = $(RELEASE)-$(REVISION)
export APP_TARBALL_FLUXCD = $(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
@@ -20,36 +19,26 @@ export STAGING = staging
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 harbor chart
rm -rf fluxcd
mkdir -p fluxcd
tar -C fluxcd -xf $(HARBOR_PKG)
# Apply Patches
cd fluxcd/helm-charts/ && patch --no-backup-if-mismatch --fuzz=0 -p1 < ../../files/0001-AddNodeAffinityToPods.patch
# create a tgz file
cd fluxcd && mkdir -p output/ && mv helm-charts harbor &&tar -czvf output/$(HARBOR_PKG_TGZ) harbor/
# Terminate the helm chart server.
pkill chartmuseum
# Setup the staging directory. # Setup the staging directory.
mkdir -p $(STAGING)
cp files/metadata.yaml $(STAGING)
cp -Rv fluxcd-manifests $(STAGING)
mkdir -p $(STAGING)/charts mkdir -p $(STAGING)/charts
cp /usr/lib/helm/*.tgz $(STAGING)/charts
# Copy the fluxcd manifests # Adjust the helmrelease yamls based on the chart versions
cp -R fluxcd-manifests/ $(STAGING)/ for c in $(STAGING)/charts/*; do \
chart=$$(basename $$c .tgz); \
# Copy the built chart to staging chart_name=$${chart%-*}; \
cp fluxcd/output/$(HARBOR_PKG_TGZ) $(STAGING)/charts/ 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.
cp files/metadata.yaml $(STAGING)
sed -i 's/APP_REPLACE_NAME/$(APP_NAME)/g' $(STAGING)/metadata.yaml 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/APP_REPLACE_VERSION/$(APP_VERSION)/g' $(STAGING)/metadata.yaml
sed -i 's/HELM_REPLACE_REPO/$(HELM_REPO)/g' $(STAGING)/metadata.yaml sed -i 's/HELM_REPLACE_REPO/$(HELM_REPO)/g' $(STAGING)/metadata.yaml
@@ -58,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_FLUXCD) -C $(STAGING)/ . tar cfz $(APP_TARBALL) -C $(STAGING)/ .
# Cleanup staging # Cleanup staging
rm -rf $(STAGING) rm -rf $(STAGING)
@@ -68,7 +57,7 @@ override_dh_auto_build:
override_dh_auto_install: override_dh_auto_install:
# Install the app tar file. # Install the app tar file.
install -d -m 755 $(APP_FOLDER) install -d -m 755 $(APP_FOLDER)
install -p -D -m 755 $(APP_TARBALL_FLUXCD) $(APP_FOLDER) install -p -D -m 755 $(APP_TARBALL) $(APP_FOLDER)
override_dh_auto_test: override_dh_auto_test:

View File

@@ -1,12 +1,7 @@
--- ---
debname: stx-harbor-helm debname: stx-harbor-helm
debver: 1.0-1 debver: 1.0-2
src_path: stx-harbor-helm src_path: stx-harbor-helm
dl_files:
helm-charts-harbor-v1.12.0.tar.gz:
topdir: helm-charts
url: https://github.com/goharbor/harbor-helm/archive/refs/tags/v1.12.0.tar.gz
md5sum: f650eba90361abe4972fa94489a54cb1
revision: revision:
dist: $STX_DIST dist: $STX_DIST
GITREVCOUNT: GITREVCOUNT:

View File

@@ -1,5 +0,0 @@
This directory contains all StarlingX charts that need to be built for this
application. Some charts are common across applications. These common charts
reside in the stx-config/kubernetes/helm-charts directory. To include these in
this application update the build_srpm.data file and use the COPY_LIST_TO_TAR
mechanism to populate these common charts.

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

@@ -15,7 +15,7 @@ spec:
chart: chart:
spec: spec:
chart: harbor chart: harbor
version: 1.12.0 version: REPLACE_HELM_CHART_VERSION
sourceRef: sourceRef:
kind: HelmRepository kind: HelmRepository
name: stx-platform name: stx-platform