name: Release Chart

on:
  push:
    branches:
      - master
    paths:
      - "charts/external-dns/Chart.yaml"

permissions: {}
jobs:
  release:
    permissions:
      contents: write #  to push chart release and create a release (helm/chart-releaser-action)

    if: github.repository == 'kubernetes-sigs/external-dns'
    runs-on: ubuntu-latest
    defaults:
      run:
        shell: bash
    steps:
      - name: Checkout
        uses: actions/checkout@v4 # v4.0.0
        with:
          fetch-depth: 0

      - name: Get chart version
        id: chart_version
        run: |
          set -euo pipefail
          chart_version="$(grep -Po "(?<=^version: ).+" charts/external-dns/Chart.yaml)"
          echo "version=${chart_version}" >> $GITHUB_OUTPUT

      - name: Get changelog entry
        id: changelog_reader
        uses: mindsers/changelog-reader-action@b97ce03a10d9bdbb07beb491c76a5a01d78cd3ef # v2.2.2
        with:
          path: charts/external-dns/CHANGELOG.md
          version: "v${{ steps.chart_version.outputs.version }}"

      - name: Create release notes
        run: |
          set -euo pipefail
          cat <<"EOF" > charts/external-dns/RELEASE.md
          ${{ steps.changelog_reader.outputs.changes }}
          EOF

      - name: Configure Git
        run: |
          git config user.name "$GITHUB_ACTOR"
          git config user.email "$GITHUB_ACTOR@users.noreply.github.com"

      - name: Set-up Helm
        uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78 # v3.5
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          version: latest

      - name: Run chart-releaser
        uses: helm/chart-releaser-action@be16258da8010256c6e82849661221415f031968 # v1.5.0
        env:
          CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
          CR_RELEASE_NAME_TEMPLATE: "external-dns-helm-chart-{{ .Version }}"
          CR_RELEASE_NOTES_FILE: RELEASE.md
          CR_MAKE_RELEASE_LATEST: false
