name: PR合并自动部署
on:
  pull_request:
    branches: [main]
    types: [closed]

jobs:
  deploy:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
      - name: 配置SSH环境
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/deploy_key
          chmod 600 ~/.ssh/deploy_key
          ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts

      - name: 远程执行部署
        run: |
          ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} <<-'EOF'
            set -e
            cd $DEPLOY_PATH
            git fetch origin main

            # 备份运行时db
            if [ -f data/miniapp_v3.db ]; then
              cp data/miniapp_v3.db data/miniapp_v3.db.tmp
            fi

            git checkout origin/main -- .

            CHANGED=$(git diff --name-only HEAD FETCH_HEAD | grep "data/miniapp_v3.db" || true)
            if [ -z "$CHANGED" ]; then
              if [ -f data/miniapp_v3.db.tmp ]; then
                cp data/miniapp_v3.db.tmp data/miniapp_v3.db
              fi
            fi
            rm -f data/miniapp_v3.db.tmp

            /www/server/pyporject_evn/versions/3.12.13/bin/pip install -r requirements.txt
            chown -R www:www .

            # 获取gunicorn master进程，发送HUP优雅重载
            MASTER_PID=$(pgrep -f "gunicorn_conf.py" -P 1)
            echo "Detected gunicorn master PID: $MASTER_PID"
            if [ -n "$MASTER_PID" ]; then
                kill -HUP "$MASTER_PID"
                echo "✅ Graceful reload signal sent"
            else
                echo "⚠️ Gunicorn master not found, skip reload"
            fi
          EOF