name: Publish Chart

on:
  push:
    tags:
      - "v*"
  workflow_dispatch: { }

permissions:
  contents: read

jobs:  
  publish-charts:
    env:
      HELM_CHARTS_DIR: charts
      HELM_CHART: charts/vela-core
      HELM_CHART_NAME: vela-core
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
      - name: Get git revision
        id: vars
        shell: bash
        run: |
          echo "git_revision=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
      - name: Install Helm
        uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78
        with:
          version: v3.4.0
      - name: Setup node
        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
        with:
          node-version: '14'
      - name: Generate helm doc
        run: |
          make helm-doc-gen
      - name: Get the version
        id: get_version
        run: |
          VERSION=${GITHUB_REF#refs/tags/}
          echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
      - name: Tag helm chart image
        run: |
          image_tag=${{ steps.get_version.outputs.VERSION }}
          chart_version=${{ steps.get_version.outputs.VERSION }}
          sed -i "s/latest/${image_tag}/g" $HELM_CHART/values.yaml
          chart_smever=${chart_version#"v"}
          sed -i "s/0.1.0/$chart_smever/g" $HELM_CHART/Chart.yaml

      - uses: jnwng/github-app-installation-token-action@c54add4c02866dc41e106745ac6dcf5cdd6339e5 # v2
        id: get_app_token
        with:
          appId: 340472
          installationId: 38064967
          privateKey: ${{ secrets.GH_KUBEVELA_APP_PRIVATE_KEY }}
      - name: Sync Chart Repo
        run: |
          git config --global user.email "135009839+kubevela[bot]@users.noreply.github.com"
          git config --global user.name "kubevela[bot]"
          git clone https://x-access-token:${{ steps.get_app_token.outputs.token }}@github.com/kubevela/charts.git kubevela-charts
          helm package $HELM_CHART --destination ./kubevela-charts/docs/
          helm repo index --url https://kubevela.github.io/charts ./kubevela-charts/docs/
          cd kubevela-charts/
          git add docs/
          chart_version=${{ steps.get_version.outputs.VERSION }}
          git commit -m "update vela-core chart ${chart_version}"
          git push https://x-access-token:${{ steps.get_app_token.outputs.token }}@github.com/kubevela/charts.git
