feat(release-backport-v0.5): publish Helm chart to OCI repo on release (#253)#257
Open
Vedansh074 wants to merge 2 commits into
Open
feat(release-backport-v0.5): publish Helm chart to OCI repo on release (#253)#257Vedansh074 wants to merge 2 commits into
Vedansh074 wants to merge 2 commits into
Conversation
## What this PR does Right now the Nutanix CCM Helm chart is published from a separate place, so its version drifts from the CCM image and releasing it is a manual, out-of-band step. This PR brings the chart into this repo and makes our existing release workflow publish it automatically — so every time we tag a CCM release, a matching Helm chart is pushed to the same GHCR location we already use. In short: tag `vX.Y.Z` → the workflow builds the image *and* ships `ghcr.io/nutanix-cloud-native/chart/nutanix-cloud-provider:X.Y.Z` alongside it. ## Why it's built this way A couple of decisions worth calling out for review: - **The chart is intentionally a copy of the currently published `0.5.6` chart.** I pulled the live chart from GHCR and matched it template-for-template and value-for-value, so existing users' `values.yaml` files and `--set` flags keep working unchanged. The only differences are in `Chart.yaml` (see below). If you want to diff it against the published one, everything except `Chart.yaml` is byte-identical. - **We publish with plain `helm package` + `helm push`, not `chart-releaser-action`.** The chart is consumed as an OCI artifact, and `chart-releaser-action` is really for GitHub-Pages chart repos — it would also create its own GitHub Releases and collide with the release this workflow already produces. Plain package/push is simpler and matches how the chart is actually distributed. - **Version handling.** The chart `version` uses the tag without the leading `v` (e.g. `0.6.5`, because Helm chart versions must be plain semver), while `appVersion` keeps the `v` (e.g. `v0.6.5`) so the chart's default image tag lines up with the image this same job builds and pushes. ## Changes **New chart — `charts/nutanix-cloud-provider/`** - Deployment, ConfigMap, RBAC (SA + ClusterRole + binding), and an optional credentials Secret, plus helpers/NOTES — mirrored from the published chart. - `Chart.yaml`: `version`/`appVersion` are `0.0.0` placeholders that the release workflow overwrites from the tag; I also dropped the version-specific `artifacthub.io/changes` annotation so it doesn't go stale every release. **Release workflow — `.github/workflows/release.yaml`** - Added `packages: write` (+ `contents: write`) to the `build_release` job so it can push to GHCR. - Added steps to set up Helm, package the chart with the tag-derived version, and push it to `oci://ghcr.io/nutanix-cloud-native/chart`. **Docs** - `charts/.../README.md`: fixed install/upgrade instructions to use the OCI registry (they previously pointed at the old `nutanix.github.io/helm` GitHub-Pages repo), cleaned up leftover "Nutanix-CSI" copy-paste text, corrected a default value, and made the Contributing/Issues links absolute (the relative `../../issues` link was broken from the chart's directory depth). - Root `README.md`: added an Installation section documenting the Helm/OCI install method, linking to the chart README. ## How I tested it - `helm lint` passes. - Chart renders cleanly and the generated `nutanix_config.json` is valid JSON. - Confirmed the chart is byte-for-byte identical to the published `0.5.6` chart except for the intentional `Chart.yaml` changes. - Simulated a `v0.6.5` release locally: produces `nutanix-cloud-provider-0.6.5.tgz`, the rendered image resolves to `controller:v0.6.5`, and the push target is `ghcr.io/nutanix-cloud-native/chart/nutanix-cloud-provider:0.6.5`. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> (cherry picked from commit 175da28)
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## release-v0.5 #257 +/- ##
===============================================
Coverage ? 77.51%
===============================================
Files ? 8
Lines ? 418
Branches ? 0
===============================================
Hits ? 324
Misses ? 94
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Contributor
|
e2e runner here is targeting a runner type that doesn't exist |
5d528f6 to
4812253
Compare
Contributor
Author
Fixed |
thunderboltsid
approved these changes
Jul 9, 2026
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.
Backport
This will backport the following commits from
maintorelease-v0.5:Questions ?
Please refer to the Backport tool documentation