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
?