Chart Releaser Action to Automate GitHub Page Charts

This guide describes how to use Chart Releaser Action to automate releasing charts through GitHub pages. Chart Releaser Action is a GitHub Action workflow to turn a GitHub project into a self-hosted Helm chart repo, using helm/chart-releaser CLI tool.

Repository Changes

Create a Git repository under your GitHub organization. You could give the name of the repository as helm-charts, though other names are also acceptable. The sources of all the charts can be placed under the main branch. The charts should be placed under /charts directory at the top-level of the directory tree.

There should be another branch named gh-pages to publish the charts. The changes to that branch will be automatically created by the Chart Releaser Action described here. However, you can create that gh-branch and add README.md file, which is going to be visible to the users visiting the page.

You can add instruction in the README.md for charts installation like this (replace <alias>, <orgname>, and <chart-name>):

## Usage

[Helm](https://helm.sh) must be installed to use the charts.  Please refer to
Helm's [documentation](https://helm.sh/docs) to get started.

Once Helm has been set up correctly, add the repo as follows:

  helm repo add <alias> https://<orgname>.github.io/helm-charts

If you had already added this repo earlier, run `helm repo update` to retrieve
the latest versions of the packages.  You can then run `helm search repo
<alias>` to see the charts.

To install the <chart-name> chart:

    helm install my-<chart-name> <alias>/<chart-name>

To uninstall the chart:

    helm delete my-<chart-name>

The charts will be published to a website with URL like this:

https://<orgname>.github.io/helm-charts

GitHub Actions Workflow

Create GitHub Actions workflow file in the main branch at .github/workflows/release.yml

name: Release Charts

on:
  push:
    branches:
      - main

jobs:
  release:
    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: Run chart-releaser
        uses: helm/chart-releaser-action@v1.1.0
        env:
          CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

The above configuration 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.

The Chart Releaser Action version number used in the above example is v1.1.0. You can change it to the latest available version.

Note: The Chart Releaser Action is almost always used in tandem with the Helm Testing Action and Kind Action.