name: Publish Release

on:
  push:
    tags:
      - 'v*.*.*'

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
        with:
          ref: ${{ github.ref }}
      - name: Setup Helm
        uses: azure/setup-helm@v3
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
        id: install
      - name: Helm Package
        run: echo "PACKAGE_PATH=$(helm package . | awk '{print $NF}')" >> $GITHUB_ENV
      - name: Publish Helm Chart
        run: |
          helm registry login registry-1.docker.io -u ${{ secrets.DOCKER_HUB_USERNAME }} -p ${{ secrets.DOCKER_HUB_PASSWORD }}
          helm push ${{ env.PACKAGE_PATH }} oci://registry-1.docker.io/${{ secrets.DOCKER_HUB_USERNAME }}
          helm registry login ghcr.io -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }}
          helm push ${{ env.PACKAGE_PATH }} oci://ghcr.io/${{ github.actor }}
      - name: Upload to chart repository
        run: |
          git config --global user.email "${{ github.event.repository.name }}@users.noreply.github.com"
          git config --global user.name "${{ github.event.repository.name }} CI"
          git fetch origin chart-repository
          git checkout chart-repository
          mkdir -p ../helm-temp
          cd ../helm-temp
          cp ${{ env.PACKAGE_PATH }} .
          helm repo index --merge ../harbor-helm/index.yaml .
          mv ./* ../harbor-helm
          cd ../harbor-helm
          git add .
          git commit -s -m "feat: Upload Harbor ${{ github.ref }} to chart repository"
          git push origin chart-repository
      - name: Release
        uses: softprops/action-gh-release@v1
        with:
          files: ${{ env.PACKAGE_PATH }}
