add a tool to check local charts version in release manifest
All checks were successful
Check Release Manifest Local Charts Versions / Check Release Manifest Local Charts Versions (pull_request) Successful in 8s
Build PR in OBS / Build PR in OBS (pull_request_target) Successful in 12s

Signed-off-by: Nicolas Belouin <nicolas.belouin@suse.com>
This commit is contained in:
2025-05-09 15:04:27 +02:00
parent 4ee8e8c6f2
commit cc8d3fe431
3 changed files with 90 additions and 22 deletions

View File

@@ -0,0 +1,23 @@
name: Check Release Manifest Local Charts Versions
on:
pull_request:
branches-ignore:
- "devel"
jobs:
sync-pr-project:
name: "Check Release Manifest Local Charts Versions"
runs-on: tumbleweed
steps:
# Waiting on PR to get merged for support in upstream action/checkout action
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
name: Checkout repository
with:
object-format: 'sha256'
- name: Setup dependencies
run: |
zypper in -y python3-PyYAML
- name: Check release manifest
run: |
python3 .obs/manifest-check.py

45
.obs/manifest-check.py Normal file
View File

@@ -0,0 +1,45 @@
#!/usr/bin/python3
import yaml
import sys
def get_chart_version(chart_name: str) -> str:
with open(f"./{chart_name}-chart/Chart.yaml") as f:
chart = yaml.safe_load(f)
return chart["version"]
def get_charts(chart):
if not chart["chart"].startswith("%%CHART_REPO%%"):
# Not a locally managed chart
return {}
chart_name = chart["chart"][len("%%CHART_REPO%%/%%CHART_PREFIX%%"):]
charts = { chart_name: chart["version"] }
for child_chart in chart.get("dependencyCharts", []) + chart.get("addonCharts", []):
charts.update(get_charts(child_chart))
return charts
def get_charts_list():
with open("./release-manifest-image/release_manifest.yaml") as f:
manifest = yaml.safe_load(f)
charts = {}
for chart in manifest["spec"]["components"]["workloads"]["helm"]:
charts.update(get_charts(chart))
return charts
def main():
print("Checking charts versions in release manifest")
success = True
charts = get_charts_list()
for chart in charts:
expected_version = get_chart_version(chart)
if expected_version != charts[chart]:
success = False
print(f"{chart}: Expected: {expected_version}, Got: {charts[chart]}")
if not success:
sys.exit(1)
else:
print("All local charts in release manifest are using the right version")
if __name__ == "__main__":
main()

View File

@@ -106,20 +106,20 @@ spec:
repository: https://charts.rancher.io
- prettyName: MetalLB
releaseName: metallb
chart: %%CHART_REPO%%/%%CHART_PREFIX%%metallb
version: %%CHART_MAJOR%%.0.0+up0.14.9
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%metallb"
version: "%%CHART_MAJOR%%.0.0+up0.14.9"
- prettyName: CDI
releaseName: cdi
chart: %%CHART_REPO%%/%%CHART_PREFIX%%cdi
version: %%CHART_MAJOR%%.0.0+up0.5.0
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%cdi"
version: "%%CHART_MAJOR%%.0.0+up0.5.0"
- prettyName: KubeVirt
releaseName: kubevirt
chart: %%CHART_REPO%%/%%CHART_PREFIX%%kubevirt
version: %%CHART_MAJOR%%.0.0+up0.5.0
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%kubevirt"
version: "%%CHART_MAJOR%%.0.0+up0.5.0"
addonCharts:
- releaseName: kubevirt-dashboard-extension
chart: %%CHART_REPO%%/%%CHART_PREFIX%%kubevirt-dashboard-extension
version: %%CHART_MAJOR%%.0.2+up1.3.2
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%kubevirt-dashboard-extension"
version: "%%CHART_MAJOR%%.0.2+up1.3.2"
- prettyName: NeuVector
releaseName: neuvector
chart: neuvector
@@ -137,8 +137,8 @@ spec:
version: 2.0.1
- prettyName: EndpointCopierOperator
releaseName: endpoint-copier-operator
chart: %%CHART_REPO%%/%%CHART_PREFIX%%endpoint-copier-operator
version: %%CHART_MAJOR%%.0.0+up0.2.1
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%endpoint-copier-operator"
version: "%%CHART_MAJOR%%.0.0+up0.2.1"
- prettyName: Elemental
releaseName: elemental-operator
chart: oci://registry.suse.com/rancher/elemental-operator-chart
@@ -154,25 +154,25 @@ spec:
version: 3.0.0
- prettyName: SRIOV
releaseName: sriov-network-operator
chart: %%CHART_REPO%%/%%CHART_PREFIX%%sriov-network-operator
version: %%CHART_MAJOR%%.0.2+up1.5.0
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%sriov-network-operator"
version: "%%CHART_MAJOR%%.0.2+up1.5.0"
dependencyCharts:
- releaseName: sriov-crd
chart: %%CHART_REPO%%/%%CHART_PREFIX%%sriov-crd
version: %%CHART_MAJOR%%.0.2+up1.5.0
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%sriov-crd"
version: "%%CHART_MAJOR%%.0.2+up1.5.0"
- prettyName: Akri
releaseName: akri
chart: %%CHART_REPO%%/%%CHART_PREFIX%%akri
version: %%CHART_MAJOR%%.0.0+up0.12.20
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%akri"
version: "%%CHART_MAJOR%%.0.0+up0.12.20"
addonCharts:
- releaseName: akri-dashboard-extension
chart: %%CHART_REPO%%/%%CHART_PREFIX%%akri-dashboard-extension
version: %%CHART_MAJOR%%.0.2+up1.3.1
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%akri-dashboard-extension"
version: "%%CHART_MAJOR%%.0.2+up1.3.1"
- prettyName: Metal3
releaseName: metal3
chart: %%CHART_REPO%%/%%CHART_PREFIX%%metal3
version: %%CHART_MAJOR%%.0.4+up0.11.2
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%metal3"
version: "%%CHART_MAJOR%%.0.4+up0.11.2"
- prettyName: RancherTurtles
releaseName: rancher-turtles
chart: %%CHART_REPO%%/%%CHART_PREFIX%%rancher-turtles
version: %%CHART_MAJOR%%.0.2+up0.19.0
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%rancher-turtles"
version: "%%CHART_MAJOR%%.0.2+up0.19.0"