Backend - KarengataSDA/Docs GitHub Wiki

#This is Deployment yml file for Backend. name: Deploy Laravel API to Contabo Server

on: push: branches: - develop

jobs: deploy: runs-on: ubuntu-latest

steps:
- name: Checkout Code
  uses: actions/checkout@v3

- name: Setup PHP
  uses: shivammathur/setup-php@v2
  with:
    php-version: 8.1

- name: Install Composer Dependencies
  run: composer install --ignore-platform-reqs --optimize-autoloader --no-progress --no-interaction --prefer-dist

- name: Setup Node.js
  uses: actions/setup-node@v3
  with:
    node-version: '20'

- name: Install NPM Dependencies
  run: npm install

- name: Build NPM Assets
  run: npm run build

- name: Deploy Code to Server
  uses: appleboy/[email protected]
  with:
    host: ${{ secrets.VPS_HOST }}
    username: ${{ secrets.VPS_USER }}
    key: ${{ secrets.SSH_PRIVATE_KEY }}
    source: "."
    target: "/home/${{ secrets.VPS_USER }}/ksda-backend-temp"
    strip_components: 1

- name: Configure and Deploy on Server
  uses: appleboy/[email protected]
  with:
    host: ${{ secrets.VPS_HOST }}
    username: ${{ secrets.VPS_USER }}
    key: ${{ secrets.SSH_PRIVATE_KEY }}
    script: |
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S mkdir -p /var/www/html/ksda-backend
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S rsync -avz --delete /home/${{ secrets.VPS_USER }}/ksda-backend-temp/ /var/www/html/ksda-backend/
      
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S chown -R www-data:www-data /var/www/html/ksda-backend
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S chmod -R 775 /var/www/html/ksda-backend
      
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S mkdir -p /var/www/html/ksda-backend/storage/logs
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S touch /var/www/html/ksda-backend/storage/logs/laravel.log
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S chmod -R 775 /var/www/html/ksda-backend/storage
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S chmod -R 775 /var/www/html/ksda-backend/bootstrap/cache
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S chmod 664 /var/www/html/ksda-backend/storage/logs/laravel.log
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S chown -R www-data:www-data /var/www/html/ksda-backend/storage /var/www/html/ksda-backend/bootstrap/cache

      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S rm -f /var/www/html/ksda-backend/.env
      echo "${{ secrets.ENV_FILE }}" | sudo tee /var/www/html/ksda-backend/.env > /dev/null
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S chmod 664 /var/www/html/ksda-backend/.env
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S chown www-data:www-data /var/www/html/ksda-backend/.env

      rm -rf /home/${{ secrets.VPS_USER }}/ksda-backend-temp
      
      cd /var/www/html/ksda-backend

      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S echo "${{ secrets.ENV_FILE }}" > .env

      php artisan key:generate || true 
      php artisan config:clear
      php artisan cache:clear
      php artisan route:clear
      php artisan view:clear
      php artisan optimize
      
      echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S chown -R www-data:www-data /var/www/html/ksda-backend/storage /var/www/html/ksda-backend/bootstrap/cache

- name: Run Database Migrations
  uses: appleboy/[email protected]
  with:
    host: ${{ secrets.VPS_HOST }}
    username: ${{ secrets.VPS_USER }}
    key: ${{ secrets.SSH_PRIVATE_KEY }}
    script: |
      cd /var/www/html/ksda-backend
      
      php artisan db:wipe --force && php artisan migrate


      # Run migrations manually in order of their timestamps
      for file in $(ls -1 database/migrations | sort); do
        php artisan migrate --path=database/migrations/$file --force
      done

      php artisan db:seed --force

      php artisan vendor:publish --tag=scribe-config