Helm chartsnap action

May 22, 2025 · View on GitHub

GitHub Marketplace Helm chartsnap CI

A GitHub action to do continuous snapshot testing for changes of your or third-party Helm chart values in your repository.

If you want to update snapshots, the changes will be automatically committed to a new branch and a pull request created.

Helm chartsnap action will:

  1. Run helm-chartsnap for the Helm chart with your values file.
  2. If you want to update snapshot, create a pull request to merge the new branch into the base—the branch checked out in the workflow.

Usage

jobs:
  chartsnap-ingress-nginx:
    runs-on: ubuntu-latest
    name: Do snapshot ingress-nginx and create PR if snapshot changed
    permissions:
      contents: write
      pull-requests: write
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Chart Snapshot for ingress-nginx
        uses: jlandowner/helm-chartsnap-action@v1
        with:
          repo:   https://kubernetes.github.io/ingress-nginx
          chart:  ingress-nginx
          values: charts/remote/ingress-nginx.values.yaml
          update_snapshot: true

  chartsnap-local:
    runs-on: ubuntu-latest
    name: Local chart snapshot
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Chart Snapshot for local chart
        uses: jlandowner/helm-chartsnap-action@v1
        id: chartsnap
        with:
          chart:  charts/app1/
          values: charts/app1/test/
          update_snapshot: true

You can also pin to a specific release version in the format @v1.x.x

Workflow permissions

For this action to work you must explicitly allow GitHub Actions to create pull requests. This setting can be found in a repository's settings or organization's settings under Actions > General > Workflow permissions.

Also you needs to set permissions in your workflow config.

    permissions:
      contents: write
      pull-requests: write

Action inputs

NameDescriptionRequiredDefault
chartName of the Helm chart in remote repository or local chart directory pathYes-
repoURL of the remote Helm repositoryNo""
valuesPath to the values file or directoryNo""
additional_argsAddtional args for the command "helm template" (e.g. --namespace kube-system, --skip-tests, --show-only etc.)No""
update_snapshotIf set true, update snapshot and create pull request if snapshots are changedNofalse
disable_create_pull_requestIf set true, disable to create pull request even if snapshots are changedNofalse
tokenGITHUB_TOKEN (permissions contents: write and pull-requests: write) or a repo scoped Personal Access Token (PAT).NoGITHUB_TOKEN
helm_versionHelm version to use azure/setup-helmNolatest

Examples

Action Usecases

1. Get snapshot of third-party chart using your values file continuously to get diff when chart version is bumpped up

jobs:
  chartsnap-ingress-nginx:
    runs-on: ubuntu-latest
    name: Do snapshot ingress-nginx and create PR if snapshot changed
    permissions:
      contents: write
      pull-requests: write
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Chart Snapshot for ingress-nginx
        uses: jlandowner/helm-chartsnap-action@v1
        with:
          repo:   https://kubernetes.github.io/ingress-nginx # Third-party chart repository
          chart:  ingress-nginx                              # Chart name in the repository to snapshot
          values: charts/remote/ingress-nginx.values.yaml    # Your values file path
          update_snapshot: true                              # Create PR if snapshot is changed

2. Get snapshots of all expected usecase patterns of values files of your chart continuously

  chartsnap-local:
    runs-on: ubuntu-latest
    name: Do snapshot app1 chart and create PR if snapshot changed
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Chart Snapshot for local chart
        uses: jlandowner/helm-chartsnap-action@v1
        id: chartsnap
        with:
          chart:  charts/app1/       # Chart directory path to snapshot
          values: charts/app1/test/  # Directory including the values files
          update_snapshot: true      # Create PR if snapshots are changed

3. Test backward compatibility of your chart with old values continuously

  chartsnap-local:
    runs-on: ubuntu-latest
    name: Test app1 chart's backward compatibility with old values
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Snapshot testing for app1 chart
        uses: jlandowner/helm-chartsnap-action@v1
        id: chartsnap
        with:
          chart:  charts/app1/       # Chart directory path to snapshot
          values: charts/app1/test/  # Directory including the values files
          # if snapshot is changed, this action fails and show the difference in log.

Pull Request example

See https://github.com/jlandowner/helm-chartsnap-action/pull/2

License

MIT