name: Deploy Dev

on:
  push:
    branches: [master]

concurrency: deploy-dev

jobs:
  deploy:
    environment: dev
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Setup Node and pnpm
        uses: silverhand-io/actions-node-pnpm-run-steps@v1.2.3

      - name: Build
        run: pnpm -- lerna run build --stream

      - name: Add official connectors
        run: pnpm add-official-connectors
        working-directory: packages/core

      # See warning in https://pnpm.io/cli/prune
      - name: Prune
        run: rm -rf node_modules packages/*/node_modules && pnpm i
        env:
          NODE_ENV: production

      - name: Setup env
        working-directory: packages/core
        run: echo "$DEV_CORE_ENV" >> .env
        env:
          DEV_CORE_ENV: ${{ secrets.DEV_CORE_ENV }}

      - name: Install SSH key
        uses: shimataro/ssh-key-action@v2
        with:
          key: ${{ secrets.DEV_SSH_KEY }}
          known_hosts: ${{ secrets.DEV_SSH_KNOWN_HOSTS }}
          config: ${{ secrets.DEV_SSH_CONFIG }}

      - name: Rsync folder
        run: rsync --filter='exclude .git' -r -a --delete-before --ignore-times ./ $DEV_SERVER_IP:~/logto
        env:
          DEV_SERVER_IP: ${{ secrets.DEV_SERVER_IP }}

      - name: Sleep for 10 seconds
        run: sleep 10s

      - name: Health check
        run: curl $DEV_SERVER_URL/api/status -If
        env:
          DEV_SERVER_URL: ${{ secrets.DEV_SERVER_URL }}