Laravel使用GitHub Webhook进行持续部署

时间:2020-04-03 07:45:37

标签: ubuntu github npm

我在运行nginx的Ubuntu服务器上有一个Laravel应用程序。

我想为静态站点设置一个像Netlify一样的CD系统,以便服务器在每个git push上自动pull并运行build脚本,这非常酷

我设置了一个GitHub Webhook,以便每次按下它都会触发服务器上名为deploy.sh的bash脚本。

这是我的deploy.sh

#!/bin/bash

# activate maintenance mode
php artisan down

# update source code
git pull

npm run build

# update PHP dependencies
#composer install --no-interaction --no-dev --prefer-dist

php artisan migrate --force

php artisan up

到目前为止一切顺利。

但是该脚本在npm run build脚本处失败,我得到以下输出:

> npm run production

npm ERR! code ELIFECYCLE
npm ERR! syscall spawn sh
npm ERR! file sh
npm ERR! path sh
npm ERR! errno ENOENT
npm ERR! @ build: `npm run production`
npm ERR! spawn sh ENOENT
npm ERR! 
npm ERR! Failed at the @ build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

当我在终端中通过ssh手动运行脚本时,即使www-data用户也可以运行脚本!

我测试了通过运行www-datasudo -H -u www-data ./deploy.sh用户的身份运行它,它可以正常工作! 因此,我感到困惑的是,为什么它在被Webhook [以用户www-data身份运行时触发失败,我通过将whoami放入脚本中来确认] ...

任何帮助将不胜感激,因为我已经尝试了很长时间了...

0 个答案:

没有答案