0

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 フックから呼び出された場合は、いずれにしても動作が異なります。

4

1 に答える 1