94 lines
2.7 KiB
PHP
94 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace Deployer;
|
|
|
|
require 'recipe/laravel.php';
|
|
|
|
set('writable_use_sudo', true);
|
|
set('clear_use_sudo', true);
|
|
set('cleanup_use_sudo', true);
|
|
set('keep_releases', 1);
|
|
set('repository', 'git@git.absdev.net:mag/HolidayParks.git');
|
|
set('node_version', '22.12.0');
|
|
set('allow_anonymous_stats', false);
|
|
|
|
add('shared_files', ['.env']);
|
|
add('shared_dirs', ['storage']);
|
|
add('writable_dirs', ['storage', 'bootstrap/cache']);
|
|
|
|
host('main')
|
|
->set('hostname', 'holidayparkowners.com')
|
|
->set('remote_user', 'mag')
|
|
->set('branch', 'main')
|
|
->set('deploy_path', '/var/www/holidayparks/prod');
|
|
|
|
host('stage')
|
|
->set('hostname', 'holidayparkowners.com')
|
|
->set('remote_user', 'mag')
|
|
->set('branch', 'stage')
|
|
->set('deploy_path', '/var/www/holidayparks/stage');
|
|
|
|
/*
|
|
* Install the root npm tree, then every module that owns its own lock file,
|
|
* then run ONE root Vite build. Because Vite is compiling a module source file,
|
|
* normal Node resolution finds that module's own node_modules first.
|
|
*/
|
|
task('build', function (): void {
|
|
$node = 'export NVM_DIR="$HOME/.nvm"'
|
|
.' && [ -s "$NVM_DIR/nvm.sh" ]'
|
|
.' && . "$NVM_DIR/nvm.sh"'
|
|
.' && nvm use {{node_version}}';
|
|
|
|
run(
|
|
$node
|
|
.' && cd {{release_path}}'
|
|
.' && npm ci --no-audit --no-fund'
|
|
);
|
|
|
|
run(
|
|
$node
|
|
.' && cd {{release_path}}'
|
|
.' && for lock in Modules/*/package-lock.json; do'
|
|
.' [ -f "$lock" ] || continue;'
|
|
.' module_dir="$(dirname "$lock")";'
|
|
.' echo "[Modules] npm ci: $module_dir";'
|
|
.' (cd "$module_dir" && npm ci --no-audit --no-fund);'
|
|
.' done'
|
|
);
|
|
|
|
run(
|
|
$node
|
|
.' && cd {{release_path}}'
|
|
.' && npm run build'
|
|
);
|
|
});
|
|
|
|
task('queue:restart', function (): void {
|
|
run('cd {{release_path}} && php artisan queue:restart');
|
|
});
|
|
|
|
task('deploy:write_revision_file', function (): void {
|
|
run('cd {{release_path}} && echo "{{branch}}" > BRANCH');
|
|
run('cd {{release_path}} && date -u +"%Y-%m-%dT%H:%M:%SZ" > DEPLOYED_AT');
|
|
});
|
|
|
|
task('artisan:clear', function (): void {
|
|
run('cd {{release_path}} && php artisan view:clear');
|
|
run('cd {{release_path}} && php artisan optimize:clear');
|
|
run('cd {{release_path}} && php artisan config:clear');
|
|
run('cd {{release_path}} && php artisan route:clear');
|
|
});
|
|
|
|
task('services:restart', function (): void {
|
|
run('sudo -n nginx -t');
|
|
run('sudo -n systemctl reload nginx');
|
|
run('sudo -n systemctl restart php8.3-fpm');
|
|
});
|
|
|
|
after('deploy:update_code', 'deploy:write_revision_file');
|
|
after('deploy:vendors', 'build');
|
|
after('deploy:symlink', 'artisan:clear');
|
|
after('deploy:symlink', 'queue:restart');
|
|
after('deploy:failed', 'deploy:unlock');
|
|
after('deploy:symlink', 'services:restart');
|