chart-testing Action
A GitHub Action for installing the helm/chart-testing CLI tool.
Usage
Pre-requisites
- A GitHub repo containing a directory with your Helm charts (e.g:
charts)
- A workflow YAML file in your
.github/workflows directory.
An example workflow is available below.
For more information, reference the GitHub Help Documentation for Creating a workflow file
Inputs
For more information on inputs, see the API Documentation
version: The chart-testing version to install (default: 3.15.0)
yamllint_version: The yamllint version to install (default: 1.33.0)
yamale_version: The yamale version to install (default: 6.0.0)
lint_config: Path to a custom yamllint config file. If set, ct lint uses it instead of the default lintconf.yaml (default: none)
Example Workflow
Create a workflow (eg: .github/workflows/lint-test.yaml):
Note that Helm and Python must be installed.
This can be achieved using actions as shown in the example below.
Python is required because ct lint runs Yamale and yamllint which require Python.
name: Lint and Test Charts
on: pull_request
permissions: {}
jobs:
lint-test:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/[email protected]
with:
fetch-depth: 0
- name: Set up Helm
uses: azure/[email protected]
- uses: actions/[email protected]
with:
python-version: '3.x'
check-latest: true
- name: Set up chart-testing
uses: helm/[email protected]
- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --target-branch ${{ github.event.repository.default_branch }})
if [[ -n "$changed" ]]; then
echo "changed=true" >> "$GITHUB_OUTPUT"
fi
- name: Run chart-testing (lint)
if: steps.list-changed.outputs.changed == 'true'
run: ct lint --target-branch ${{ github.event.repository.default_branch }}
- name: Create kind cluster
if: steps.list-changed.outputs.changed == 'true'
uses: helm/[email protected]
- name: Run chart-testing (install)
if: steps.list-changed.outputs.changed == 'true'
run: ct install --target-branch ${{ github.event.repository.default_branch }}
This uses helm/kind-action GitHub Action to spin up a kind Kubernetes cluster,
and helm/chart-testing to lint and test your charts on every pull request.
Testing charts that use CRDs
If your chart renders custom resources for CRDs that are not installed by the
chart itself, install those CRDs after the kind cluster is created and before
running ct install. For example, if your repository stores the required CRD
manifests in a crds/ directory:
- name: Create kind cluster
if: steps.list-changed.outputs.changed == 'true'
uses: helm/[email protected]
- name: Install test CRDs
if: steps.list-changed.outputs.changed == 'true'
run: kubectl apply -f crds/
- name: Run chart-testing (install)
if: steps.list-changed.outputs.changed == 'true'
run: ct install --target-branch ${{ github.event.repository.default_branch }}
The helm/kind-action step configures kubectl for the kind cluster, so later
workflow steps can apply CRDs or other cluster prerequisites before chart
installation.
Upgrading from v1.x.x
v2.0.0 is a major release with breaking changes.
The action no longer wraps the chart-testing tool but simply installs it.
It is no longer run in a Docker container.
All ct options are now directly available without the additional abstraction layer.
Code of conduct
Participation in the Helm community is governed by the Code of Conduct.