Add Debian packaging for nginx-ic app

Create Debian packages for python-k8sapp-nginx-ingress-controller
and stx-nginx-ingress-controller-helm.

Story: 2009101
Task: 43746

Signed-off-by: Tracey Bogue <tracey.bogue@windriver.com>
Change-Id: If90fa3b18e94bd480d1d5c24636e22825d5f8996
This commit is contained in:
Tracey Bogue 2021-10-25 08:43:22 -05:00
parent be4f324784
commit 4b8dd90cbf
17 changed files with 282 additions and 0 deletions

2
debian_pkg_dirs Normal file
View File

@ -0,0 +1,2 @@
python-k8sapp-nginx-ingress-controller
stx-nginx-ingress-controller-helm

View File

@ -0,0 +1,5 @@
python3-k8sapp-nginx-ingress-controller (1.0-1) unstable; urgency=medium
* Initial release.
-- Tracey Bogue <tracey.bogue@windriver.com> Fri, 15 Oct 2021 09:32:42 +0000

View File

@ -0,0 +1,27 @@
Source: python3-k8sapp-nginx-ingress-controller
Section: libs
Priority: optional
Maintainer: StarlingX Developers <starlingx-discuss@lists.starlingx.io>
Build-Depends: debhelper-compat (= 13),
dh-python,
python3-all,
python3-pbr,
python3-setuptools,
python3-wheel
Standards-Version: 4.5.1
Homepage: https://www.starlingx.io
Package: python3-k8sapp-nginx-ingress-controller
Section: libs
Architecture: any
Depends: ${misc:Depends}, ${python3:Depends}
Description: StarlingX Sysinv Nginx Extension
This package contains the nginx ingress controller K8S app.
Package: python3-k8sapp-nginx-ingress-controller-wheels
Section: libs
Architecture: any
Depends: ${misc:Depends}, ${python3:Depends}, python3-wheel
Description: StarlingX Sysinv Nginx Extension Wheels
This package contains python wheels for the nginx ingress controller
K8S app plugins.

View File

@ -0,0 +1,41 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: python3-k8sapp-nginx-ingress-controller
Source: https://opendev.org/starlingx/nginx-ingress-controller-armada-app/
Files: *
Copyright: (c) 2013-2021 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: 2021 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 @@
plugins/nginx-ingress-controller/*.whl

View File

@ -0,0 +1,5 @@
usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller-1.0.0.egg-info/*
usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/*.py
usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/common/*.py
usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/lifecycle/*.py
usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/tests/*.py

View File

@ -0,0 +1,32 @@
#!/usr/bin/make -f
# export DH_VERBOSE = 1
export APP_NAME=nginx-ingress-controller
export PBR_VERSION=1.0.0
export PYBUILD_NAME=k8sapp_nginx_ingress_controller
export ROOT=debian/tmp
%:
dh $@ --with=python3 --buildsystem=pybuild
override_dh_auto_install:
python3 setup.py install --install-layout=deb --root $(ROOT)
rm -rf $(ROOT)/usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/__pycache__
rm -rf $(ROOT)/usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/common/__pycache__
rm -rf $(ROOT)/usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/common/__pycache__
rm -rf $(ROOT)/usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/lifecycle/__pycache__
rm -rf $(ROOT)/usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/lifecycle/__pycache__
rm -rf $(ROOT)/usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/tests/__pycache__
rm -rf $(ROOT)/usr/lib/python3/dist-packages/k8sapp_nginx_ingress_controller/tests/__pycache__
python3 setup.py bdist_wheel \
--universal \
-d $(ROOT)/plugins/$(APP_NAME)
override_dh_python3:
dh_python3 --shebang=/usr/bin/python3
ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
override_dh_auto_test:
# (tbogue) FIXME
PYTHONDIR=$(CURDIR) stestr run || true
endif

View File

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

View File

@ -0,0 +1,7 @@
---
debname: python3-k8sapp-nginx-ingress-controller
debver: 1.0-1
src_path: k8sapp_nginx_ingress_controller
revision:
dist: $STX_DIST
PKG_GITREVCOUNT: true

View File

@ -0,0 +1,5 @@
stx-nginx-ingress-controller-helm (1.0-1) unstable; urgency=medium
* Initial release.
-- Tracey Bogue <tracey.bogue@windriver.com> Mon, 18 Oct 2021 11:06:42 +0000

View File

@ -0,0 +1,20 @@
Source: stx-nginx-ingress-controller-helm
Section: libs
Priority: optional
Maintainer: StarlingX Developers <starlingx-discuss@lists.starlingx.io>
Build-Depends: debhelper-compat (= 13),
chartmuseum,
helm,
procps,
python3-k8sapp-nginx-ingress-controller,
python3-k8sapp-nginx-ingress-controller-wheels
Standards-Version: 4.5.1
Homepage: https://www.starlingx.io
Package: stx-nginx-ingress-controller-helm
Section: libs
Architecture: any
Depends: ${misc:Depends}
Description: StarlingX Nginx Ingress Controller Application Armada Helm Charts
This package contains Armada helm charts for the nginx ingress controller
application.

View File

@ -0,0 +1,41 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: stx-nginx-ingress-controller-helm
Source: https://opendev.org/starlingx/nginx-ingress-controller-armada-app/
Files: *
Copyright: (c) 2013-2021 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: 2021 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,61 @@
#!/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 MAJOR = $(shell echo $(DEB_VERSION) | cut -f 1 -d '.')
export MINOR_PATCH = $(shell echo $(DEB_VERSION) | cut -f 2 -d '.')
export APP_NAME = nginx-ingress-controller
export APP_VERSION = $(MAJOR).$(MINOR_PATCH)
export APP_TARBALL = $(APP_NAME)-$(APP_VERSION).tgz
export HELM_REPO = stx-platform
export STAGING = staging
%:
dh $@
override_dh_auto_build:
# Move the extracted helm chart files to the top level build directory.
# Remove the helm-charts Makefile first so it doesn't overwrite our Makefile.
rm helm-charts/Makefile
mv helm-charts/* .
# Apply the daemonset tolerations patch.
patch --no-backup-if-mismatch --fuzz=0 -p1 < 0001-add-toleration.patch
# 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
# Create the TGZ file.
cp Makefile charts
cd charts && make ingress-nginx
# Terminate the helm chart server.
pkill chartmuseum
# Setup the staging directory.
mkdir -p $(STAGING)
cp metadata.yaml nginx_ingress_controller_manifest.yaml $(STAGING)
mkdir -p $(STAGING)/charts
cp charts/*.tgz $(STAGING)/charts
# Populate metadata.
sed -i 's/@APP_NAME@/$(APP_NAME)/g' $(STAGING)/metadata.yaml
sed -i 's/@APP_VERSION@/$(APP_VERSION)/g' $(STAGING)/metadata.yaml
sed -i 's/@HELM_REPO@/$(HELM_REPO)/g' $(STAGING)/metadata.yaml
# Copy the plugins: installed in the buildroot
mkdir -p $(STAGING)/plugins
cp /plugins/$(APP_NAME)/*.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 @@
usr/local/share/applications/helm/*

View File

@ -0,0 +1,25 @@
#!/bin/bash
set -x
PKG_BUILD_NAME=$1
PKG_BUILD_ROOT=$(realpath `pwd`/${PKG_BUILD_NAME})
PKG_DIR="stx-nginx-ingress-controller-helm"
STX_BASE=$(realpath ${MY_REPO}/stx)
SRC=$(realpath ${STX_BASE}/nginx-ingress-controller-armada-app/${PKG_DIR}/${PKG_DIR})
mkdir -p ${PKG_BUILD_ROOT}
pushd ${PKG_BUILD_ROOT}
# Local mirror workaround until CGCS_BASE mirror is supported.
STX_MIRROR=$(realpath "/import/mirrors/starlingx")
# Download ingress-nginx helm source package.
NGINX_PKG="helm-charts-ingress-nginx-0.41.2.tar.gz"
NGINX_SRC_PATH=$(realpath ${STX_MIRROR}/downloads/${NGINX_PKG})
cp ${NGINX_SRC_PATH} ${PKG_BUILD_ROOT}
# Extract the ingress-nginx tar file.
tar xfz ${NGINX_PKG}
# Copy source files to the build directory.
cp -pr ${SRC}/files/* ${SRC}/manifests/* ${PKG_BUILD_ROOT}

View File

@ -0,0 +1,7 @@
---
debname: stx-nginx-ingress-controller-helm
debver: 1.0-1
dl_hook: dl_hook
revision:
dist: $STX_DIST
PKG_GITREVCOUNT: true