Skip to content

feat(release-backport-v0.5): publish Helm chart to OCI repo on release (#253)#257

Open
Vedansh074 wants to merge 2 commits into
release-v0.5from
issue/253(0.5)
Open

feat(release-backport-v0.5): publish Helm chart to OCI repo on release (#253)#257
Vedansh074 wants to merge 2 commits into
release-v0.5from
issue/253(0.5)

Conversation

@Vedansh074

Copy link
Copy Markdown
Contributor

Backport

This will backport the following commits from main to release-v0.5:

Questions ?

Please refer to the Backport tool documentation

## 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)
@Vedansh074 Vedansh074 changed the title [release-v0.5] feat(release): publish Helm chart to OCI repo on release (#253) feat(release-backport-v0.5): publish Helm chart to OCI repo on release (#253) Jul 9, 2026
@codecov

codecov Bot commented Jul 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (release-v0.5@bdfe1db). Learn more about missing BASE report.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@thunderboltsid

Copy link
Copy Markdown
Contributor

e2e runner here is targeting a runner type that doesn't exist

@Vedansh074

Copy link
Copy Markdown
Contributor Author

e2e runner here is targeting a runner type that doesn't exist

Fixed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants