name: pipeline
on:
  push:
    branches:
      - "master"

permissions:
  packages: write

jobs:
  build-and-push-images:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: https://gitea.com/actions/checkout@v4
      
      - name: Log in to container registry
        uses: docker/login-action@v3
        with:
          registry: https://git.vhaudiquet.fr
          username: ${{ github.actor }}
          password: ${{ secrets.PACKAGES_TOKEN }}
      
      - name: Build and push docker image
        uses: docker/build-push-action@v6
        with:
          context: .
          push: true
          tags: |
            git.vhaudiquet.fr/vhaudiquet/vhaudiquet.fr:latest
            git.vhaudiquet.fr/vhaudiquet/vhaudiquet.fr:${{ github.sha }}

  lint-and-publish-chart:
    runs-on: ubuntu-latest
    needs: build-and-push-images
    steps:
      - name: Checkout repository
        uses: https://gitea.com/actions/checkout@v4
        with:
          fetch-depth: 0
      
      - name: Install Helm
        uses: azure/setup-helm@v5
      
      - name: Update Chart version and appVersion
        run: |
          # Get base chart version from Chart.yaml
          BASE_VERSION=$(grep '^version:' chart/Chart.yaml | awk '{print $2}')
          # Use timestamp for ordered versions (e.g., 0.1.0-20240511-130400)
          # Note: SemVer pre-release cannot contain dots, only hyphens and alphanumerics
          TIMESTAMP=$(date -u +"%Y%m%d-%H%M%S")
          CHART_VERSION="${BASE_VERSION}-${TIMESTAMP}"
          
          # Update both version and appVersion
          sed -i "s/^version:.*/version: \"${CHART_VERSION}\"/" chart/Chart.yaml
          sed -i "s/^appVersion:.*/appVersion: \"${{ github.sha }}\"/" chart/Chart.yaml
          
          echo "chart_version=${CHART_VERSION}" >> $GITHUB_ENV
      
      - name: Lint Helm chart
        run: helm lint chart/
      
      - name: Package Helm chart
        run: helm package chart/
      
      - name: Push Helm chart to Gitea registry
        run: |
          echo "Uploading chart to Gitea registry..."
          echo "User: ${{ github.actor }}"
          echo "URL: https://git.vhaudiquet.fr/api/packages/vhaudiquet/helm/api/charts"
          # Trim any trailing newline from the token
          TOKEN=$(echo -n "${{ secrets.PACKAGES_TOKEN }}" | tr -d '\n')
          curl --fail -v --user "${{ github.actor }}:${TOKEN}" -X POST --upload-file vhaudiquet-fr-*.tgz "https://git.vhaudiquet.fr/api/packages/vhaudiquet/helm/api/charts"
