chart: make deploy/helm/radar canonical + auto-sync to helm-charts#599
Merged
nadaverell merged 3 commits intomainfrom May 1, 2026
Merged
chart: make deploy/helm/radar canonical + auto-sync to helm-charts#599nadaverell merged 3 commits intomainfrom
nadaverell merged 3 commits intomainfrom
Conversation
The chart lived in two places — here and skyhook-io/helm-charts/charts/radar — and had drifted (radar copy stuck at 0.6.9 with stale metadata; published copy at 1.5.x missing the ClusterAPI/Contour/Trivy CRD groups that exist in this repo's clusterrole.yaml). Single-source-of-truth now lives here. - Replace this chart's Chart.yaml/values.yaml with the published metadata (1.5.x lineage, ArtifactHub annotations, radarhq.io URLs). - Bump to 1.5.10 — picks up the new values.schema.json plus the three extra CRD groups that were already wired into clusterrole.yaml but missing from the published values.yaml. - Add values.schema.json: Helm validates user values at install/upgrade and ArtifactHub shows a 'Values schema' badge. - New workflow: on push to main touching deploy/helm/radar/**, mirror the chart into skyhook-io/helm-charts/charts/radar/ and open a PR. Requires a HELM_CHARTS_SYNC_TOKEN secret (fine-grained PAT scoped to helm-charts with Contents + Pull-requests rw).
The helm job in .github/workflows/release.yml already clones helm-charts on every Radar release, overwrites charts/radar/ with deploy/helm/radar/, and pushes to main. Adding a separate sync workflow on Chart.yaml changes duplicates that path with no real benefit — chart-only edits between releases are rare, and waiting for the next release picks them up.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit e619f23. Configure here.
…llision Three follow-ups from the chart canonicalization review: - Extend the chart-version sed to also rewrite the image tag inside the artifacthub.io/images annotation. Previously hard-coded at 1.5.7; ArtifactHub would otherwise advertise a stale image version on every future release. - Fail fast if helm-charts already has tag radar-$VERSION before pushing. helm/chart-releaser-action skips packaging on tag collision, so a successful workflow run could silently fail to publish a new chart and users' 'helm repo update' would never see the new contents. - Drop the manual 'update Helm chart appVersion' step from DEVELOPMENT.md — the helm job rewrites it automatically and a manual edit only races with the release machinery.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Why
The Radar Helm chart was living in two places that had drifted:
deploy/helm/radar/in this repo — Chart.yaml stuck at v0.6.9 with stale metadata, butclusterrole.yamlhad ClusterAPI / Contour / Trivy CRD groups wired up.skyhook-io/helm-charts/charts/radar/— published to ArtifactHub at v1.5.x with proper metadata, but missing those three CRD groups invalues.yaml. Users installing from the public repo never got the RBAC grants.The existing
helmjob in.github/workflows/release.ymlalready auto-syncsdeploy/helm/radar/→helm-charts/charts/radar/on every Radar release. The drift came from someone hand-editing helm-charts after the last release — those hand-edits were going to be clobbered the next time release.yml ran. This PR resolves that by making the canonical copy contain everything, so the next release-time sync is correct.What changes
values.schema.json— Helm validates user-supplied values at install/upgrade time (catches typos, bad enums, out-of-range ports), and ArtifactHub displays a "Values schema" badge.additionalProperties: trueonservice/persistence/auth.oidc/mcp/trafficso future fields don't break user configs.release.ymlhandles publishing.release.yml(follow-up from review):artifacthub.io/images:(previously hard-coded at 1.5.7 — would have advertised a stale image on every future release).radar-$VERSIONbefore pushing.helm/chart-releaser-actionsilently skips on tag collision; the workflow would otherwise return success but users'helm repo updatewould see nothing new.DEVELOPMENT.md—release.ymlrewrites Chart.yaml automatically; manual edits race with the release machinery.No new CI infra needed; the existing
release.ymlhelmjob already syncs on every release.Net effect for end users (after next Radar release)
Sequencing with skyhook-io/helm-charts#11
skyhook-io/helm-charts#11 ships the values schema standalone at v1.5.9 so the badge lights up immediately. After that lands, helm-charts will hold tag
radar-1.5.9. The next Radar release must therefore be ≥ v1.5.10 — the new tag-collision guard will fail the helm job otherwise, with a clear error message.Test plan
helm lint deploy/helm/radarpasseshelm templatewith default values passes the new schemahelm template --set rbac.crdGroups.clusterApi=true --set rbac.crdGroups.contour=true --set rbac.crdGroups.trivy=truerenders the expected RBAC rulestimeline.storage=invalid,auth.mode=bogus) and out-of-rangeservice.port=99999radar:1.5.7→radar:<release-version>cleanly)