Validate, publish and promote nextcloud-notify-push chart / chart (push) Successful in 33s
29 lines
1.3 KiB
Bash
Executable File
29 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
chart_name=$(basename "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/nextcloud-notify-push" && pwd)")
|
|
chart_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/nextcloud-notify-push" && pwd)
|
|
helm lint "$chart_dir" --strict
|
|
python3 - "$chart_dir" "$chart_name" <<'PY'
|
|
import subprocess,sys,yaml
|
|
chart,name=sys.argv[1:]
|
|
with open(chart+'/Chart.yaml') as f: metadata=yaml.safe_load(f)
|
|
def render(*args):
|
|
output=subprocess.check_output(['helm','template',name,chart,'--namespace','nextcloud',*args],text=True)
|
|
return {(x['kind'],x['metadata']['name']):x for x in yaml.safe_load_all(output) if x}
|
|
default=render()
|
|
enabled=render('--set','ingress.enabled=true','--set','monitoring.enabled=true')
|
|
assert ('Service',name) in default
|
|
assert ('Ingress',name) not in default
|
|
if name!='nextcloud-clamav':
|
|
assert ('Ingress',name) in enabled
|
|
if name=='nextcloud-notify-push':
|
|
assert ('ServiceMonitor',name) in enabled
|
|
else:
|
|
assert ('Deployment',name) in default
|
|
images=[c['image'] for c in default['Deployment',name]['spec']['template']['spec'].get('initContainers',[])+default['Deployment',name]['spec']['template']['spec']['containers']]
|
|
assert all(image.endswith(':'+metadata['appVersion']) for image in images)
|
|
if name=='nextcloud-clamav':
|
|
assert ('PersistentVolumeClaim',name) in default
|
|
assert not any(kind=='Secret' for kind,_ in enabled)
|
|
PY
|