Skip to content

feat: publish container images and Helm chart to GHCR#1126

Open
andyzhangx wants to merge 12 commits into
kubernetes-csi:masterfrom
andyzhangx:publish-helm-oci
Open

feat: publish container images and Helm chart to GHCR#1126
andyzhangx wants to merge 12 commits into
kubernetes-csi:masterfrom
andyzhangx:publish-helm-oci

Conversation

@andyzhangx

@andyzhangx andyzhangx commented May 10, 2026

Copy link
Copy Markdown
Member

What

Add GitHub Actions workflow (.github/workflows/publish-helm-oci.yaml) that builds multi-arch container images and publishes the Helm chart as an OCI artifact to GHCR.

Published artifacts

Artifact Location
Container image ghcr.io/kubernetes-csi/nfsplugin:<version> (linux/amd64, arm64, arm/v7, ppc64le)
Helm chart (OCI) oci://ghcr.io/kubernetes-csi/csi-driver-nfs

Triggers

Automatic (on release)

When a GitHub Release is published with a v* tag, the workflow automatically builds images, creates a multi-arch manifest, and pushes the Helm chart.

Manual (workflow_dispatch)

Maintainers can manually trigger from the Actions tab by providing a version (e.g., v4.13.2). Useful for backfilling historical versions or re-publishing.

Workflow structure

  1. validate — Early version format check (v<major>.<minor>.<patch>)
  2. build-linux — Cross-compile Go binary + docker buildx build for each arch (parallel)
  3. manifest — Create and push multi-arch manifest
  4. publish-helm — Package and push Helm chart as OCI (independent of image builds)
  5. summary — Job summary with install commands

Install

# Container image
docker pull ghcr.io/kubernetes-csi/nfsplugin:v4.13.2

# Helm chart
helm install csi-driver-nfs oci://ghcr.io/kubernetes-csi/csi-driver-nfs --version 4.13.2 -n kube-system

Release note:

none

@k8s-ci-robot k8s-ci-robot added the do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. label May 10, 2026
@k8s-ci-robot k8s-ci-robot requested review from RaunakShah and pohly May 10, 2026 00:45
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: andyzhangx

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added approved Indicates a PR has been approved by an approver from all required OWNERS files. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels May 10, 2026
@andyzhangx andyzhangx removed the do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. label May 10, 2026
@andyzhangx andyzhangx requested a review from Copilot May 10, 2026 00:46

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Adds a GitHub Actions workflow to publish the csi-driver-nfs Helm chart to GitHub Container Registry (GHCR) as an OCI artifact, enabling helm install oci://... consumption and release-driven publishing.

Changes:

  • Introduces a new workflow triggered on GitHub Release publish and manual workflow_dispatch.
  • Validates input/tag versioning and chart directory existence, then runs helm lint.
  • Packages and pushes the chart to GHCR, then verifies it can be fetched via helm show.

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

Comment thread .github/workflows/publish-helm-oci.yaml

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Comment thread .github/workflows/publish-helm-oci.yaml
Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Comment thread .github/workflows/publish-helm-oci.yaml Outdated
@andyzhangx andyzhangx requested a review from Copilot May 10, 2026 01:17
@andyzhangx andyzhangx force-pushed the publish-helm-oci branch 2 times, most recently from 5e5c42e to e469916 Compare May 10, 2026 01:20

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Comment thread .github/workflows/publish-helm-oci.yaml
Comment thread .github/workflows/publish-helm-oci.yaml
@andyzhangx andyzhangx requested a review from Copilot May 10, 2026 01:21
@andyzhangx andyzhangx changed the title feat: publish Helm chart to GHCR as OCI artifact feat: publish container images and Helm chart to GHCR May 10, 2026
@k8s-ci-robot k8s-ci-robot added the do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. label May 10, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.

Comment thread .github/workflows/publish-helm-oci.yaml
Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Comment thread .github/workflows/publish-helm-oci.yaml Outdated
@k8s-ci-robot k8s-ci-robot added release-note-none Denotes a PR that doesn't merit a release note. and removed do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels May 10, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/publish-helm-oci.yaml Outdated
@andyzhangx andyzhangx requested a review from Copilot May 10, 2026 02:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 2 comments.

Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Comment thread .github/workflows/publish-helm-oci.yaml Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 2 comments.

Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Comment thread .github/workflows/publish-helm-oci.yaml

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 2 comments.

Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Reuse existing Makefile targets to ensure build flags (LDFLAGS,
EXT_LDFLAGS with -static, -mod vendor) and output paths stay in
sync with the project's canonical build.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/publish-helm-oci.yaml Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.

Comment thread .github/workflows/publish-helm-oci.yaml
Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Comment thread .github/workflows/publish-helm-oci.yaml Outdated
…onal summary

- Set DOCKER_CLI_EXPERIMENTAL=enabled for manifest commands
- Use 'helm show chart' instead of grep for Chart.yaml version
- Show success/failure status per section in job summary

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 2 comments.

Comment thread .github/workflows/publish-helm-oci.yaml Outdated
Comment thread .github/workflows/publish-helm-oci.yaml Outdated
…ir fallback

- Source Go version from go.mod via setup-go's go-version-file
- Add fallback to charts/latest/ when versioned chart dir not found
@andyzhangx

Copy link
Copy Markdown
Member Author

/hold

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. release-note-none Denotes a PR that doesn't merit a release note. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants