我正在尝试gitbook build
在我的(Gitlab、Debian 7、虚拟专用)服务器上的接收后 Git 挂钩中运行。
基本上我想:
- 将裸存储库签出到临时目录
gitbook build
在那个临时目录中运行- 通过与网络空间同步
rsync
该post-receive
脚本运行如下:
git --work-tree=/home/git/temp-checkout /
--git-dir=/home/git/repositories/my/repo.git checkout -f
gitbook build /home/git/temp-checkout
rsync ...
从服务器的命令行运行这些命令效果很好。
从服务器的命令行运行脚本也很有效。
但是当从 Git 钩子调用脚本时,gitbook
调用会产生以下错误:
remote: path.js:439
remote: throw new TypeError('Arguments to path.resolve must be strings');
remote: ^
remote: TypeError: Arguments to path.resolve must be strings
remote: at Object.posix.resolve (path.js:439:13)
remote: at Object.<anonymous> (/usr/lib/node_modules/gitbook-cli/lib/config.js:5:24)
remote: at Module._compile (module.js:460:26)
remote: at Object.Module._extensions..js (module.js:478:10)
remote: at Module.load (module.js:355:32)
remote: at Function.Module._load (module.js:310:12)
remote: at Module.require (module.js:365:17)
remote: at require (module.js:384:17)
remote: at Object.<anonymous> (/usr/lib/node_modules/gitbook-cli/bin/gitbook.js:11:14)
remote: at Module._compile (module.js:460:26)
搜索该错误消息似乎指向 Grunt,但我只是不知道这里发生了什么。我怀疑有关调用/权限的一些事情,但是用户(在两种情况下都whoami
返回git
用户)和工作目录似乎都没有区别。
但无论如何gitbook
,当“本地”调用(即从服务器的命令行)或从 Git 钩子调用时,行为会有所不同。