Skip to content

feat(release): publish Helm chart to OCI repo on release#253

Merged
Vedansh074 merged 3 commits into
mainfrom
issue/helm-chart
Jul 9, 2026
Merged

feat(release): publish Helm chart to OCI repo on release#253
Vedansh074 merged 3 commits into
mainfrom
issue/helm-chart

Conversation

@Vedansh074

@Vedansh074 Vedansh074 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

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.

@codecov

codecov Bot commented Jul 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.75%. Comparing base (48ff296) to head (37bba9d).
⚠️ Report is 23 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #253      +/-   ##
==========================================
- Coverage   79.64%   77.75%   -1.89%     
==========================================
  Files           8        8              
  Lines         393      517     +124     
==========================================
+ Hits          313      402      +89     
- Misses         80      115      +35     

☔ 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

@Vedansh074 this would also have to be backported to v0.5.x, v0.6.x, and v0.7.x branches

Comment thread .github/workflows/release.yaml
Comment thread .github/workflows/release.yaml Outdated
Comment thread .github/workflows/release.yaml Outdated
@Vedansh074 Vedansh074 changed the title feat(release): publish Helm chart to GHCR on release feat(release): publish Helm chart to OCI repo on release Jul 9, 2026
@tuxtof tuxtof requested a review from Copilot July 9, 2026 11:42
Comment thread .github/workflows/release.yaml
Comment thread .github/workflows/release.yaml
Comment thread README.md

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the Nutanix CCM Helm chart to this repository and extends the existing release workflow so a Git tag release publishes both the controller image and a matching Helm chart to GHCR as an OCI artifact.

Changes:

  • Introduces charts/nutanix-cloud-provider/ (templates, values, docs) for the CCM Helm chart.
  • Updates .github/workflows/release.yaml to lint, package, and push the chart to ghcr.io/... on tag releases.
  • Updates root and chart docs to describe OCI-based Helm install/upgrade.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 14 comments.

Show a summary per file
File Description
README.md Adds OCI Helm installation instructions and links to the chart README.
.github/workflows/release.yaml Adds Helm/chart-testing setup, linting, packaging, and OCI push to GHCR during release.
charts/nutanix-cloud-provider/Chart.yaml Adds chart metadata and placeholder version/appVersion for release-time override.
charts/nutanix-cloud-provider/README.md Documents OCI install/upgrade/uninstall and configuration values.
charts/nutanix-cloud-provider/values.yaml Defines default chart values for Prism Central, image, scheduling, etc.
charts/nutanix-cloud-provider/.helmignore Adds standard Helm packaging ignore patterns.
charts/nutanix-cloud-provider/templates/_helpers.tpl Adds helper template definitions (labels/names).
charts/nutanix-cloud-provider/templates/cloud-provider-nutanix-deployment.yaml Adds the CCM Deployment template.
charts/nutanix-cloud-provider/templates/cm.yaml Adds ConfigMap templates including generated nutanix_config.json and CA bundle ConfigMap.
charts/nutanix-cloud-provider/templates/secret.yaml Adds optional credentials Secret template.
charts/nutanix-cloud-provider/templates/rbac.yaml Adds ServiceAccount, ClusterRole, and ClusterRoleBinding templates.
charts/nutanix-cloud-provider/templates/NOTES.txt Adds post-install Helm notes output.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread charts/nutanix-cloud-provider/templates/secret.yaml Outdated
Comment thread charts/nutanix-cloud-provider/templates/cm.yaml Outdated
Comment thread charts/nutanix-cloud-provider/templates/cm.yaml
Comment thread charts/nutanix-cloud-provider/templates/cm.yaml Outdated
Comment thread charts/nutanix-cloud-provider/templates/cm.yaml Outdated
Comment thread README.md Outdated
Comment thread charts/nutanix-cloud-provider/README.md Outdated
Comment thread charts/nutanix-cloud-provider/README.md Outdated
Comment thread charts/nutanix-cloud-provider/Chart.yaml Outdated
Comment thread charts/nutanix-cloud-provider/templates/NOTES.txt Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@Vedansh074 Vedansh074 merged commit 175da28 into main Jul 9, 2026
13 checks passed
@Vedansh074 Vedansh074 deleted the issue/helm-chart branch July 9, 2026 14:59
@Vedansh074

Copy link
Copy Markdown
Contributor Author

💚 All backports created successfully

Status Branch Result
release-v0.6

Questions ?

Please refer to the Backport tool documentation

@Vedansh074

Copy link
Copy Markdown
Contributor Author

💚 All backports created successfully

Status Branch Result
release-v0.5

Questions ?

Please refer to the Backport tool documentation

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.

4 participants