set('hostname', 'helpdesk.absdev.net') ->set('remote_user', 'mag') ->set('branch', 'main') ->set('deploy_path', '/var/www/helpdesk'); host('develop') ->set('hostname', 'helpdesk.mpba.dev') ->set('remote_user', 'mag') ->set('branch', 'develop') ->set('deploy_path', '/var/www/helpdesk_dev'); host('mpba') ->set('hostname', 'sirius.absdev.net') ->set('remote_user', 'mag') ->set('branch', 'main') ->set('deploy_path', '/var/www/helpdesk'); /* * 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 { // Validate and reload nginx. run('sudo -n nginx -t'); run('sudo -n systemctl reload nginx'); // Detect the PHP-FPM socket configured in nginx. $socket = trim(run( "sudo -n nginx -T 2>/dev/null" . " | grep -oE 'php[0-9]+\\.[0-9]+-fpm\\.sock'" . " | sort -Vu" . " | tail -n 1" )); if ($socket === '') { throw new \RuntimeException( 'Unable to detect the PHP-FPM version from nginx configuration.' ); } // Convert php8.5-fpm.sock into php8.5-fpm. $service = str_replace('.sock', '', $socket); writeln("Detected PHP-FPM service: {$service}"); // Restart the detected PHP-FPM service. run("sudo -n systemctl restart {$service}"); writeln("PHP-FPM restarted successfully."); }); 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');