7

コマンドを実行するだけのpost-mergeフックがgitリポジトリにありますjekyll

実行するgit pullpost-merge問題なく実行されます。

ただし、リモートのWebHookとして機能するPHPファイルをセットアップしました。

$pull = `cd .. && git pull`;
echo $pull;

このファイルにアクセスすると、git pullが実行され(いくつかの初期の問題の後)、成功します。ただし、何らかの理由でpost-merge失敗します。Apacheの内部を見るとerror_log、次のエラーが見つかります。

.git/hooks/post-merge: line 5: jekyll: command not found

SSH経由post-mergeで手動を実行すると、jekyllが正常に実行されることを考えると、これは奇妙なことです。git pull

ここで提案されているように実行可能ファイルへのフルパスを使用して実行すると、次のエラーが発生しますerror_log

/usr/bin/env: ruby_noexec_wrapper: No such file or directory

RVMを介してRubyをインストールしました。

どうすればapacheユーザーを問題なく実行させることができjekyllますか?

編集:これが私の現在のpost-merge

#!/bin/sh

unset GIT_DIR

source /usr/local/rvm/environments/ruby-1.9.3-p194

/usr/local/rvm/gems/ruby-1.9.3-p194/bin/jekyll

echo "Deployed!"

これをユーザーとして実行すると、次のapacheエラーが発生します。

Node.jsがインストールされます。

4

3 に答える 3

4

このエラーは非常に明確だと思います。

jekyll: command not found

コマンドへの完全なパスを使用する必要がありますjekyll

whereis jekyll

次に、次のようなフルパスでコマンドを実行します。

/usr/local/bin/jekyll --params

これが問題の解決策ですruby_noexec_wrapper

/ usr / bin /envruby_noexec_wrapperがファイルまたはディレクトリなしで失敗する

編集:

Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available

ExecJSで、JavaScriptランタイムが見つかりませんでした

于 2012-10-24T15:49:36.787 に答える
2

私はRVMを使用していたので、Rubyの代わりにRVMを直接調達する必要がありました。理由はわかりませんが、現在は機能しています。

post-mergeは次のように見えます:

#!/bin/bash

unset GIT_DIR

/usr/local/rvm/bin/rvm use 1.9.3

/usr/local/rvm/gems/ruby-1.9.3-p194/bin/jekyll

echo "Deployed!"

完璧ではありません– rvmは、私が望まないものを大量にエコーしますが、機能します。

于 2013-01-20T22:31:18.937 に答える
0

~/.bash_profileファイルに以下を追加することで、この問題を修正しました。

source ~/.bashrc

rvmインストーラーはすでに追加されているはずです

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

この上に行を追加するsourceと、これらの問題が修正されました。

于 2013-10-11T09:12:07.793 に答える