name: "Production: Deploy Infrastructure"
run-name: "Production: Deploy Infrastructure"

on:
  push:
    branches:
      - main
    paths:
      - 'deploy/**'
      - '.github/workflows/deploy-infra.yml'
  workflow_dispatch:

concurrency:
  group: deploy-gemmbot
  cancel-in-progress: false

jobs:
  deploy-infra:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup SSH
        env:
          EC2_HOST: ${{ secrets.EC2_HOST }}
          EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }}
        run: |
          mkdir -p ~/.ssh
          echo "$EC2_SSH_KEY" > ~/.ssh/deploy_key
          chmod 600 ~/.ssh/deploy_key
          ssh-keyscan -H $EC2_HOST >> ~/.ssh/known_hosts

      - name: Deploy Caddyfile
        env:
          EC2_HOST: ${{ secrets.EC2_HOST }}
          EC2_USER: ${{ secrets.EC2_USER }}
        run: |
          scp -i ~/.ssh/deploy_key deploy/Caddyfile $EC2_USER@$EC2_HOST:/tmp/Caddyfile
          ssh -i ~/.ssh/deploy_key $EC2_USER@$EC2_HOST "
            sudo cp /tmp/Caddyfile /etc/caddy/Caddyfile
            rm /tmp/Caddyfile
          "

      - name: Deploy systemd units
        env:
          EC2_HOST: ${{ secrets.EC2_HOST }}
          EC2_USER: ${{ secrets.EC2_USER }}
        run: |
          scp -i ~/.ssh/deploy_key \
            deploy/gemmbot.service \
            deploy/gemmbot-ui.service \
            $EC2_USER@$EC2_HOST:/tmp/

          ssh -i ~/.ssh/deploy_key $EC2_USER@$EC2_HOST "
            sudo cp /tmp/gemmbot.service /etc/systemd/system/gemmbot.service
            sudo cp /tmp/gemmbot-ui.service /etc/systemd/system/gemmbot-ui.service
            rm /tmp/gemmbot.service /tmp/gemmbot-ui.service
            sudo systemctl daemon-reload
            sudo systemctl enable caddy gemmbot gemmbot-ui
          "

      - name: Reload Caddy
        env:
          EC2_HOST: ${{ secrets.EC2_HOST }}
          EC2_USER: ${{ secrets.EC2_USER }}
        run: |
          ssh -i ~/.ssh/deploy_key $EC2_USER@$EC2_HOST "
            sudo systemctl reload caddy 2>/dev/null || sudo systemctl restart caddy
          "
