forked from suse-edge/Factory
add a tool to check local charts version in release manifest
Signed-off-by: Nicolas Belouin <nicolas.belouin@suse.com>
This commit is contained in:
23
.gitea/workflows/check_manifest.yaml
Normal file
23
.gitea/workflows/check_manifest.yaml
Normal 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
45
.obs/manifest-check.py
Normal 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()
|
@@ -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"
|
||||
|
Reference in New Issue
Block a user