# Publish chart to the GitHub Container Registry (GHCR) on push to master # Run the following tests on PRs: # - Check if chart's documentation is up to date # - Check chart linting # - Check chart installation in a Kind cluster # - Check chart packaging name: Chart on: pull_request: branches: [master] paths: [deploy/helm] push: branches: [master] paths: [deploy/helm] jobs: lint-test: runs-on: ubuntu-latest if: ${{ github.event_name == 'pull_request' }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # ct lint requires Python 3.x to run following packages: # - yamale (https://github.com/23andMe/Yamale) # - yamllint (https://github.com/adrienverge/yamllint) - uses: actions/setup-python@v4 with: python-version: '3.x' - uses: helm/chart-testing-action@v2 - name: Run chart-testing (lint) run: ct lint --config ct.yaml - name: Check docs run: | docker run --rm --volume "${PWD}/deploy:/helm-docs" -u "$(id -u)" jnorwood/helm-docs if ! git diff --exit-code; then echo "error::Documentation is not up to date. Please run helm-docs and commit changes." exit 1 fi - uses: helm/kind-action@v1 - name: Run chart-testing (install) run: ct install --config ct.yaml - name: Run helm package charts run: | for chart in $(ct list-changed --config ct.yaml); do helm package $chart -d out done publish: runs-on: ubuntu-latest if: ${{ github.event_name == 'push' }} permissions: packages: write steps: - uses: actions/checkout@v4 - uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - uses: helm/chart-testing-action@v2 - name: Run helm package charts run: | for chart in $(ct list-changed --config ct.yaml); do helm package $chart -d out done - name: Push chart to GHCR working-directory: out run: | for pkg in $(ls *.tgz); do helm push $pkg oci://ghcr.io/${{ github.repository_owner }}/charts done