当我推送到GitHub上的存储库时,我试图建立一个自动在远程服务器上进行拉取和编译的系统。我已经找到了一些非常有用的功能,但我仍然坚持最后一步:执行我的任务,gulp --dist
。
我使用this excellent PHP script触发拉动,效果很好。我已经分叉了该存储库,以便尝试添加一个额外的选项AFTER_PULL
,该选项在完成后执行shell命令。 Here's my modification(也在下面)。在config.php中,我设置了以下内容:
define('AFTER_PULL', 'node ./node_modules/gulp/bin/gulp.js --dist');
这似乎永远不会触发,似乎也没有触发任何错误。
我认为它可能是权限,但用户(www-data)有权在所有必要的目录中工作。我找到了this article detailing how to allow www-data to run without needing a password,但在完成这些步骤后,它仍无效。
我确定我必须做一些明显错误的事情,而我却无法看到它。如果我在具有sudo -Hu www-data
的终端中运行该命令,则该命令有效。
...
if (!empty(AFTER_PULL)) {
try{
shell_exec(AFTER_PULL);
}catch (Exception $e) {
fputs($file, $e . "\n");
}
}
...
答案 0 :(得分:2)
使用节点二进制文件的完整路径:
define('AFTER_PULL', ' /usr/bin/node ./node_modules/gulp/bin/gulp.js --dist');