name: Deploy

on:
  workflow_dispatch:
  push:
    branches:
    - main

jobs:
  deploy:
    name: Deploy
    runs-on: ubuntu-latest
    environment:
      name: docs.pluginpal.io
      url: https://docs.pluginpal.io
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Set up Docker
        uses: actions/setup-node@v3
        with:
          node-version: '14'

      - name: Build a Docker image
        run: |
          docker build \
            -t pluginpal-docs:latest .
          docker save -o pluginpal-docs-latest.tar pluginpal-docs:latest

      - name: Transfer the Docker image to the Dokku server
        uses: appleboy/scp-action@v0.1.3
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_CI_USERNAME }}
          password: ${{ secrets.SSH_CI_PASSWORD }}
          source: pluginpal-docs-latest.tar
          target: /var/lib/dokku/data/storage/docs/docker-images

      - name: Deploy the Dokku app based on the Docker image
        uses: appleboy/ssh-action@v0.1.10
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_CI_USERNAME }}
          password: ${{ secrets.SSH_CI_PASSWORD }}
          script_stop: true
          script: |
            sudo docker load -i /var/lib/dokku/data/storage/docs/docker-images/pluginpal-docs-latest.tar
            DOCS_LATEST_IMAGE=$(sudo docker images --format "{{.ID}}" pluginpal-docs:latest)
            sudo docker tag pluginpal-docs:latest pluginpal-docs:$DOCS_LATEST_IMAGE
            dokku git:from-image docs pluginpal-docs:$DOCS_LATEST_IMAGE
            sudo docker system prune --all --force
