Puedo ejecutar " npm run prod ". Puse el mismo comando en un archivo deploy.sh . Nuevamente, todavía puedo ejecutar el script de implementación usando ./deploy.sh, y funciona. Pero el mismo script de implementación no se pudo ejecutar cuando ocurre el git hook.
" npm i " funciona tanto en la terminal, implementar el script y usar git hook.
El script deploy.sh es el siguiente:
#!/bin/sh php artisan down git pull origin $1 composer install --no-interaction --prefer-dist --optimize-autoloader --no-dev php artisan migrate --force php artisan cache:clear php artisan route:cache php artisan config:cache npm ci # everything works fine, but the line below npm run production php artisan up Y lo raro es que , en la terminal, cuando ejecuto ./deploy.sh todo funciona, sin ningún problema. pero cuando se llama al script de implementación mediante un webhook de GitHub, arroja estos errores:
Por lo tanto, npm run prod funciona en la terminal, funciona cuando ejecuto el script de implementación mediante ./deploy.sh en la terminal, pero no funciona cuando el git hook llama a la aplicación laravel para ejecutar el script de implementación.
Así es como ejecuto el archivo deployment.sh usando laravel:
$process = new Process(['./deploy.sh']); $process->setWorkingDirectory(base_path()); $process->run(function ($type, $buffer) { Log::info($buffer); });Lo que he probado ya:
usando cross-env : no funciona. usando rm -rf node_modules & npm cache clean --force & npm i : no funciona.
su código no es reproducible en mi extremo. sin embargo, mi hipótesis es que la salida estándar de log:info $buffer de laravels está en conflicto con la salida estándar de registro del proceso maestro. deshabilite el registro o cambie el nivel de registro e intente el procedimiento anterior. deberia de funcionar.
¿Está ejecutando el comando correcto? ¿Hablas de ejecutar npm run prod localmente pero en tu archivo deployment.sh es deploy.sh npm run production ?