name: Deploy to EC2
on:
  workflow_dispatch: # allow manual run
  push:
    branches:
      - master
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          fetch-depth: 2
      - uses: actions/setup-node@v1
        with:
          node-version: 20
      - uses: pnpm/action-setup@v3.0.0
        with:
          version: 8.15.6

      # --------------------
      # Setup configuration
      # --------------------
      - name: Prepare configuration files
        run: |
          git clone https://${{ secrets.GH_PAT }}@github.com/roadmapsh/infra-config.git configuration --depth 1
      - name: Copy configuration files
        run: |
          cp configuration/dist/github/developer-roadmap.env .env

      # --------------------
      # Prepare the build
      # --------------------
      - name: Install dependencies
        run: |
          pnpm install
      - name: Generate build
        run: |
          git clone https://${{ secrets.GH_PAT }}@github.com/roadmapsh/web-draw.git .temp/web-draw --depth 1
          npm run generate-renderer
          npm run compress:images
          npm run build

      # --------------------
      # Deploy to EC2
      # --------------------
      - uses: webfactory/ssh-agent@v0.7.0
        with:
          ssh-private-key: ${{ secrets.EC2_PRIVATE_KEY }}
      - name: Deploy app to EC2
        run: |
          rsync -apvz --delete --no-times --exclude "configuration" -e "ssh -o StrictHostKeyChecking=no" -p ./ ${{ secrets.EC2_USERNAME }}@${{ secrets.EC2_HOST }}:/var/www/roadmap.sh/
      - name: Restart PM2
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.EC2_HOST }}
          username: ${{ secrets.EC2_USERNAME }}
          key: ${{ secrets.EC2_PRIVATE_KEY }}
          script: |
            cd /var/www/roadmap.sh
            sudo pm2 restart web-roadmap