|
4 | 4 | @story('deploy', ['skipBackup' => false, 'skipFrontend' => false]) |
5 | 5 | @if(!$skipFrontend) |
6 | 6 | build-frontend |
| 7 | + push-frontend |
7 | 8 | @endif |
8 | 9 | @if(!$skipBackup) |
9 | 10 | backup-database |
|
14 | 15 | perform-migration |
15 | 16 | optimize-cache |
16 | 17 | @if(!$skipFrontend) |
17 | | - push-frontend |
| 18 | + switch-frontend |
18 | 19 | @endif |
19 | 20 | up |
20 | 21 | @endstory |
|
76 | 77 |
|
77 | 78 | @task('push-frontend', ['on' => 'local']) |
78 | 79 | set -e |
79 | | - echo "Copying compiled assets to server..." |
80 | | - scp -r {{ __DIR__ }}/public/build root@143.198.129.111:/var/www/ComputerScienceResources.com/public |
| 80 | + echo "Copying compiled frontend to server (staging to new_public)..." |
| 81 | + # ensure destination staging directory exists on server |
| 82 | + ssh root@143.198.129.111 'mkdir -p /var/www/ComputerScienceResources.com/new_public' |
| 83 | + # copy the whole public directory (including build assets) to the staging directory |
| 84 | + scp -r {{ __DIR__ }}/public root@143.198.129.111:/var/www/ComputerScienceResources.com/new_public |
| 85 | +@endtask |
| 86 | + |
| 87 | + |
| 88 | +@task('switch-frontend', ['on' => 'server']) |
| 89 | + set -e |
| 90 | + cd /var/www/ComputerScienceResources.com |
| 91 | + echo "Checking maintenance mode before switching frontend..." |
| 92 | + # only switch if application is in maintenance mode (artisan creates storage/framework/down) |
| 93 | + if [ -f storage/framework/down ]; then |
| 94 | + echo "Maintenance mode detected — performing frontend switch" |
| 95 | + if [ ! -d new_public ]; then |
| 96 | + echo "No new_public directory found, aborting frontend switch" |
| 97 | + exit 1 |
| 98 | + fi |
| 99 | + |
| 100 | + if [ -d public ]; then |
| 101 | + timestamp=$(date +%s) |
| 102 | + echo "Backing up current public to public_old_$timestamp" |
| 103 | + mv public public_old_$timestamp |
| 104 | + fi |
| 105 | + |
| 106 | + echo "Promoting new_public to public" |
| 107 | + mv new_public public |
| 108 | + |
| 109 | + # Fix permissions if needed |
| 110 | + chown -R www-data:www-data public || true |
| 111 | + echo "Frontend switch complete" |
| 112 | + else |
| 113 | + echo "Application is not in maintenance mode — skipping frontend switch" |
| 114 | + fi |
81 | 115 | @endtask |
0 commit comments