name: Staging Build
on:
  push:
    branches:
      - staging

jobs:
  build:
    runs-on: webserver
    container:
      image: catthehacker/ubuntu:act-latest
    defaults:
      run:
        working-directory: shop
    steps:
      - name: Code auschecken
        uses: actions/checkout@v4

      - name: Abhängigkeiten installieren
        run: npm install

      - name: Staging-Build generieren
        env:
          NODE_ENV: production
          # KORREKTUR: Wir brennen die interne Docker-Netzwerk-URL fest ein!
          NEXT_PUBLIC_SUPABASE_URL: http://supabase-kong:8000
          NEXT_PUBLIC_SUPABASE_ANON_KEY: ${{ secrets.STAGING_SUPABASE_ANON_KEY }}
        run: npm run build

      - name: Docker login to Gitea registry
        run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login gitea.hephex.de -u "${{ secrets.REGISTRY_USER }}" --password-stdin

      # KORREKTUR: Wir übergeben die INTERNE Docker-URL auch an das Docker-Image!
      - name: Build Docker image
        run: |
          docker build \
            --build-arg NEXT_PUBLIC_SUPABASE_URL="http://supabase-kong:8000" \
            --build-arg NEXT_PUBLIC_SUPABASE_ANON_KEY="${{ secrets.STAGING_SUPABASE_ANON_KEY }}" \
            -t gitea.hephex.de/daniel/webshop:staging -f Dockerfile .
        working-directory: .

      # KORREKTUR: Auch der Push wird vom Hauptordner aus gestartet
      - name: Push Docker image
        run: docker push gitea.hephex.de/daniel/webshop:staging
        working-directory: .

      - name: Clean up runner Docker cache
        run: |
          docker image prune -f
          docker builder prune -f
        working-directory: .


      # KORREKTUR: IP-Adresse exakt auf Ihren Proxmox-Staging-Container eingestellt
      - name: Deploy to Proxmox LXC via SSH
        uses: appleboy/ssh-action@v0.1.5
        with:
          host: 192.168.178.132
          username: ${{ secrets.PROXMOX_USER }}
          key: ${{ secrets.PROXMOX_SSH_KEY }}
          script: |
            cd /opt/webshop/supabase/supabase-project
            docker compose pull webshop
            docker compose up -d webshop
            docker image prune -f
