Skip to main content
This guide shows how to package a Helm chart and publish it as an OCI artifact to an OCI-compatible registry (example: GitHub Container Registry, ghcr.io). The steps follow the repository’s 7-demo branch and use the 7.7.1 subfolder, which contains a Helm chart. Repository folder layout under 7.7.1:
Goal: create an OCI artifact from the Helm chart and push it to an OCI registry, then verify the published package.

Prerequisites

Confirm Helm is installed:

Step 1 — Package the Helm chart

Use helm package to create a compressed chart archive (.tgz) from the chart directory. This produces a distributable chart file you can upload to an OCI registry. Example:
If you prefer the Helm native OCI workflow, you can instead use helm chart save to create an OCI-ready reference before pushing.

Step 2 — Authenticate to the OCI registry

Log in to the OCI registry before pushing artifacts. For GitHub Container Registry (ghcr.io), use your GitHub username and a Personal Access Token (PAT) as the password.
For GitHub Container Registry, ensure your Personal Access Token includes package permissions such as write:packages and read:packages. Also consider enabling the package visibility settings on GitHub if you want public or private distribution.
Example login:

Step 3 — Push the packaged chart to the OCI registry

There are two common ways to push Helm charts to an OCI registry:
  • Use Helm’s native OCI support (Helm v3.8+): helm chart save + helm chart push, or helm chart push.
  • Use the community helm-push plugin which provides helm push.
The example below shows using the helm-push plugin (command: helm push). If you prefer Helm’s native OCI commands, replace helm push with helm chart push or use the chart save/chart push sequence. Example push with helm-push:
After success, the chart artifact is published under your registry namespace (for example: ghcr.io/sidd-harth-2/bb-app) and tagged with the chart version (e.g., 7.7.1).

Step 4 — Verify the published package

You can verify the published package in two ways:
  • Registry UI: Check GitHub Packages → your repository → Packages to confirm the package name and version appear.
  • Helm CLI: Pull the chart back with Helm to confirm it was stored as a Helm OCI artifact.
Helm pull example (fetches the chart archive):
If you used Helm’s native OCI commands, you can also:
Note: Many registries store Helm charts as OCI artifacts with Helm-specific media types. These artifacts may not always be pulled using standard Docker CLI commands, so prefer using Helm for pull/export operations.

Quick reference — Common commands

Summary

  • Package the chart with helm package (or use helm chart save for the native OCI flow).
  • Authenticate to the OCI registry with helm registry login.
  • Push the packaged chart using either Helm’s native OCI commands (helm chart push) or the helm-push plugin (helm push) to an oci:// URL.
  • Verify the chart in the registry UI or pull it back with Helm (helm pull / helm chart pull).
That’s all for now.

Watch Video