name: Development Deployment via Rsync
on:
  push:
    branches:
      - master
env:
  ENV_DEV: ${{ vars.ENV_DEV }}
  ENV_GITHUB: ${{ vars.ENV_GITHUB }}
jobs:
  deployment:
    name: Development deployment
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.head_ref }}
          fetch-depth: 2
      - name: Use Node.js
        uses: actions/setup-node@v3
      - name: Pull environment form variable
        run: |
          echo "$ENV_DEV" > .env
          echo "$ENV_GITHUB" > .env_github
      - id: dotenv_github
        name: Read dotenv file for github env
        uses: falti/dotenv-action@v1.0.4
        with:
          path: '.env_github'
          export-variables: true
          log-variables: false
          mask-variables: true
          keys-case: 'bypass'
      - name: Install SSH Key
        uses: shimataro/ssh-key-action@v2
        with:
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          known_hosts: 'just-a-placeholder-so-we-dont-get-errors'
      - name: Adding Known Hosts
        run: |
          printenv
          ssh-keyscan -H $SERVER_IP >> ~/.ssh/known_hosts
      - name: Set Owner to Login User
        run: |
          ssh $SERVER_USERNAME@$SERVER_IP "sudo mkdir -p $PATH_DEPLOY"
          ssh $SERVER_USERNAME@$SERVER_IP "sudo chown -R $LOGIN_USER:$LOGIN_USER $PATH_DEPLOY"
      - name: Deploy to Server
        uses: easingthemes/ssh-deploy@main
        env:
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
          ARGS: "-rlgoDzvc -i --delete"
          SOURCE: "./"
          REMOTE_HOST: $SERVER_IP
          REMOTE_USER: $SERVER_USERNAME
          TARGET: $PATH_DEPLOY
          EXCLUDE: "/vendor/, /node_modules/, /storage/, /.github/, /thunder-tests/, /docker/, /.fly/, /.dockerignore, /.env.example "
      - name: Setup Application
        run: |
          ssh $SERVER_USERNAME@$SERVER_IP "sudo mkdir -p $PATH_DEPLOY/storage/framework/views"
          ssh $SERVER_USERNAME@$SERVER_IP "cd $PATH_DEPLOY; composer install;"
          ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan migrate --force"
          ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan optimize:clear"
          ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan optimize"
          ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan cache:clear"
      - name: Setup Security
        run: |
          ssh $SERVER_USERNAME@$SERVER_IP "rm -rf $PATH_DEPLOY/.git"
          ssh $SERVER_USERNAME@$SERVER_IP "sudo chown -R $NGINX_USER:$NGINX_USER $PATH_DEPLOY"
          ssh $SERVER_USERNAME@$SERVER_IP "sudo chmod -R 777 $PATH_DEPLOY/storage/framework/"
          ssh $SERVER_USERNAME@$SERVER_IP "sudo chmod -R 777 $PATH_DEPLOY/storage/logs/"