name: Deploy to Server on: push: branches: [ production ] workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest steps: - name: Deploy to server uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} key: ${{ secrets.SSH_KEY }} port: ${{ secrets.PORT || 22 }} script: | # Navigate to project directory cd ${{ secrets.PROJECT_PATH || '/var/www/portal' }} # Pull latest code echo "๐Ÿ”„ Pulling latest code..." git pull origin ${{ github.ref_name }} # Install/Update Composer dependencies echo "๐Ÿ“ฆ Installing Composer dependencies..." composer install --no-dev --optimize-autoloader # Install/Update NPM dependencies echo "๐Ÿ“ฆ Installing NPM dependencies..." npm ci --only=production # Build assets echo "๐Ÿ—๏ธ Building assets..." npm run production # Laravel optimizations echo "โšก Optimizing Laravel..." php artisan config:cache php artisan route:cache php artisan view:cache php artisan optimize # Clear application cache echo "๐Ÿงน Clearing application cache..." php artisan cache:clear # Set permissions echo "๐Ÿ” Setting permissions..." chmod -R 755 storage bootstrap/cache chown -R www-data:www-data storage bootstrap/cache echo "โœ… Deployment completed successfully!"