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:
- Run helm-chartsnap for the Helm chart with your values file.
- 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.
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
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
Name | Description | Required | Default |
---|---|---|---|
chart |
Name of the Helm chart in remote repository or local chart directory path | Yes | - |
repo |
URL of the remote Helm repository | No | "" |
values |
Path to the values file or directory | No | "" |
additional_args |
Addtional args for the command "helm template" (e.g. --namespace kube-system , --skip-tests , --show-only etc.) |
No | "" |
update_snapshot |
If set true , update snapshot and create pull request if snapshots are changed |
No | false |
disable_create_pull_request |
If set true , disable to create pull request even if snapshots are changed |
No | false |
token |
GITHUB_TOKEN (permissions contents: write and pull-requests: write ) or a repo scoped Personal Access Token (PAT). |
No | GITHUB_TOKEN |
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
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
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.
See #2