name: Deploy to Production

on:
  push:
    tags:
      - 'v*'

jobs:
  deploy:
    runs-on: splendid-bear
    steps:
      - name: Checkout tag
        env:
          GITEA_TOKEN: ${{ gitea.token }}
        run: |
          set -e
          export HOME=/tmp
          git config --global credential.helper '!f() { echo "username=oauth2"; echo "password=$GITEA_TOKEN"; }; f'
          git config --global --add safe.directory "${{ vars.PROD_APP_DIR }}"
          cd "${{ vars.PROD_APP_DIR }}"
          git remote set-url origin "${{ gitea.server_url }}/${{ gitea.repository }}.git"
          git fetch --tags --force
          git checkout "${{ gitea.ref_name }}"

      - name: Write .env
        env:
          PROD_ENV_FILE: ${{ secrets.PROD_ENV_FILE }}
        run: |
          printf '%s' "$PROD_ENV_FILE" > "${{ vars.PROD_APP_DIR }}/.env"

      - name: Build image
        run: |
          cd "${{ vars.PROD_APP_DIR }}"
          docker compose build

      - name: Start services
        run: |
          cd "${{ vars.PROD_APP_DIR }}"
          docker compose up -d
