└── deploy.yml /deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Laravel Application to Production Server 2 | on: 3 | push: 4 | branches: 5 | - main 6 | 7 | jobs: 8 | deploy: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout Code 13 | uses: actions/checkout@v3 14 | 15 | - name: Setup PHP 16 | uses: shivammathur/setup-php@v2 17 | with: 18 | php-version: 8.3 19 | 20 | - name: Install Composer Dependencies 21 | run: composer install --optimize-autoloader --no-dev --no-progress --no-interaction --prefer-dist 22 | 23 | - name: Install Node 24 | uses: actions/setup-node@v3 25 | with: 26 | node-version: '20' 27 | 28 | - name: Install NPM Dependencies 29 | run: npm install 30 | 31 | - name: Build NPM Assets 32 | run: npm run build 33 | 34 | - name: Synchronize Files To Server 35 | uses: easingthemes/ssh-deploy@v2.1.5 36 | env: 37 | SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} 38 | SOURCE: "." 39 | REMOTE_HOST: ${{ secrets.VPS_HOST }} 40 | REMOTE_USER: ${{ secrets.VPS_USER }} 41 | TARGET: "/var/www/html/glennraya.com" 42 | 43 | - name: Run Remote/Artisan Commands 44 | uses: appleboy/ssh-action@v0.1.6 45 | with: 46 | host: ${{ secrets.VPS_HOST }} 47 | username: ${{ secrets.VPS_USER }} 48 | key: ${{ secrets.SSH_PRIVATE_KEY }} 49 | script: | 50 | cd /var/www/html/glennraya.com 51 | php artisan migrate --force 52 | php artisan optimize 53 | --------------------------------------------------------------------------------