chart-releaser-action
chart-releaser Action
A GitHub action to turn a GitHub project into a self-hosted Helm chart repo, using helm/chart-releaser CLI tool.
Usage
Pre-requisites
-
A GitHub repo containing a directory with your Helm charts (default is a folder named
/charts
, if you want to
maintain your charts in a different directory, you must include acharts_dir
input in the workflow). -
A GitHub branch called
gh-pages
to store the published charts. Seecharts_repo_url
for alternatives. -
In your repo, go to Settings/Pages. Change the
Source
Branch
togh-pages
. -
Create a workflow
.yml
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
-
version
: The chart-releaser version to use (default: v1.4.1) -
config
: Optional config file for chart-releaser. For more information on the config file, see the documentation -
charts_dir
: The charts directory -
charts_repo_url
: The GitHub Pages URL to the charts repo (default:https://<owner>.github.io/<project>
) -
skip_packaging
: This option, when populated, will skip the packaging step. This allows you to do more advanced packaging of your charts (for example, with thehelm package
command) before this action runs. This action will only handle the indexing and publishing steps.
Environment variables
-
CR_TOKEN
(required): The GitHub token of this repository (${{ secrets.GITHUB_TOKEN }}
)
For more information on environment variables, see the documentation.
Example Workflow
Create a workflow (eg: .github/workflows/release.yml
):
name: Release Charts on: push: branches: - main jobs: release: # depending on default permission settings for your org (contents being read-only or read-write for workloads), you will have to add permissions # see: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token permissions: contents: write runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: Configure Git run: | git config user.name "$GITHUB_ACTOR" git config user.email "$GITHUB_ACTOR@users.noreply.github.com" - name: Install Helm uses: azure/setup-helm@v3 with: version: v3.10.0 - name: Run chart-releaser uses: helm/chart-releaser-action@v1.4.1 env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
This uses @helm/chart-releaser-action to turn your GitHub project into a self-hosted Helm chart repo.
It does this – during every push to main
– by checking each chart in your project, and whenever there’s a new chart version, creates a corresponding GitHub release named for the chart version, adds Helm chart artifacts to the release, and creates or updates an index.yaml
file with metadata about those releases, which is then hosted on GitHub Pages. You do not need an index.yaml
file in main
at all because it is managed in the gh-pages
branch.
Example using custom config
workflow.yml
:
- name: Run chart-releaser uses: helm/chart-releaser-action@v1.4.1 with: charts_dir: charts config: cr.yaml charts_repo_url: xxxxxx env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
cr.yaml
:
owner: myaccount git-base-url: https://api.github.com/
For options see config-file.
Code of conduct
Participation in the Helm community is governed by the Code of Conduct.