when:
  - branch: main
    event: push

variables:
  - &ssh_setup |
    apk add --no-cache openssh-client rsync
    mkdir -p ~/.ssh
    echo "$SSH_DEPLOY_KEY" > ~/.ssh/id_ed25519
    chmod 600 ~/.ssh/id_ed25519
    ssh-keyscan -H git.sxbh.ltd >> ~/.ssh/known_hosts
    chmod 644 ~/.ssh/known_hosts

steps:
  frontend-install:
    image: node:20-alpine
    commands:
      - apk add --no-cache git
      - cd frontend
      - npm install -g pnpm
      - pnpm install
    when:
      - path: frontend/**

  frontend-build:
    image: node:20-alpine
    commands:
      - cd frontend
      - npm install -g pnpm
      - pnpm install
      - pnpm build
    when:
      - path: frontend/**

  frontend-deploy:
    image: alpine:latest
    secrets:
      - SSH_DEPLOY_KEY
    commands:
      - *ssh_setup
      - rsync -avz --delete frontend/dist/ root@git.sxbh.ltd:/var/www/cma/
      - ssh root@git.sxbh.ltd 'nginx -s reload || systemctl reload nginx'
    when:
      - path: frontend/**

  backend-deploy:
    image: alpine:latest
    secrets:
      - SSH_DEPLOY_KEY
    commands:
      - *ssh_setup
      - ssh root@git.sxbh.ltd '
          cd /root/cma-management &&
          git pull origin main &&
          cd backend &&
          pip install -r requirements.txt --quiet --no-cache-dir &&
          pkill -f uvicorn 2>/dev/null
          sleep 2
          cd /root/cma-management/backend &&
          nohup python3 -m uvicorn app.main:app --host 0.0.0.0 --port 8010 > /var/log/cma-backend.log 2>&1 &
        '
    when:
      - path: backend/**
