こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

hudson×phingの連携

hudsonで「Hudson Phing plugin」しビルド時にphingを実行するようにしているのですが、
実行させると下記のエラーとなります。
実行したビルドの、「コンソール出力」で確認しました。



--------------------------------------------------------------------------------------
[hudsonsMyTest] $ phing -buildfile build.xml test -logger phing.listener.DefaultLogger
FATAL: Phingの実行に失敗しました。インストールしたPhingのいずれ1つを使用してジョブを設定する必要があるかもしれません。
java.io.IOException: Cannot run program "phing" (in directory "/var/lib/hudson/jobs/myFookSVN/workspace/hudsonsMyTest"): java.io.IOException: error=2, No such file or directory
--------------------------------------------------------------------------------------
実際にログインして自分でphingコマンドを叩くと正常に終了します。
hudsonからの実行だと下記エラーになってしまいます。(phingが失敗するというより、phingが実行できていない?)

ユーザーanonymousが実行していて、パスなどが通っていない事や権限の問題も考えたのですが、ビルド時の実行ユーザの設定方法が見つかりませんでした。

ユーザの設定方法、または他の原因など何か考えられるものがあれば教えてください。

投稿日時 - 2011-02-18 20:03:53

QNo.6532829

困ってます

質問者が選んだベストアンサー

実行PATHに含まれていれば PHING_HOME を指定しなくても大丈夫みたいです。
なので、僕は「Hudsonの管理」→「システム設定」のPhing は設定してません。

テストを実行すると
[test] $ phing -buildfile build.xml spec -logger phing.listener.NoBannerLogger
Buildfile: /xxx/xxxx/xxx/build.xml

のように Hudson のコンソールシステムメニューに出力されてます。

どちらの方法でも良いはずなので、

> 「/usr/local/php-5.3.4/bin/phingが存在しません。」
> とエラーが出てしまいます。

この問題を解決する必要があるようですね。

PHING_HOME を設定する箇所の(?)アイコンからたどれる phing のサイトを見てみると、
PHING_HOME ディレクトリには classes と bin ディレクトリがあることが期待されているようです。

${PHING_HOME}/bin/phing.php を実行するようなので、/usr/local/php-5.3.4/bin/phing.php が存在するのでしたら、PHING_HOMEには /usr/local/php-5.3.4 を指定してみてはどうでしょうか?

Full Phing Package 版の phing を展開したときのディレクトリ構成を想定しているようですね。

投稿日時 - 2011-02-19 22:11:43

お礼

>${PHING_HOME}/bin/phing.php を実行するようなので、/usr/local/php-5.3.4/bin/phing.php が存在するのでしたら、PHING_HOMEには /usr/local/php-5.3.4 を指定してみてはどうでしょうか?

PHING_HOMEに/usr/local/php-5.3.4を指定することはできませんでした。
また、classesとbinディレクトリが存在するようなphing関連のディレクトリも見つかりませんでした。
ただ、ご指摘いただいたようにPATHの問題だと思い、hudsonを実行しているhudsonユーザにログインシェルで必要なPATHを読み込むようにしたら正常に実行することができました。
(rpmインストールで勝手に作られたユーザだったのでちょっと無理やりな気もしますが・・)
おかげさまで実行可能になりました。ありがとうございました。

投稿日時 - 2011-02-21 09:32:22

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

redmine と連携して同様のこと実践してます。

> 実際にログインして自分でphingコマンドを叩くと正常に終了します。
このユーザと、hudson のプロセスのユーザは同じなのでしょうか?
そうでないと検証として不十分じゃないかと思いまして。

「Hudsonの管理」→「システム情報」の画面で環境変数PATHにphing のあるPATHはありますか?

投稿日時 - 2011-02-19 00:20:44

補足

環境PATHとは
Phing > インストール済みPhing > PHING_HOME のことだと思うのですが、
ここに下記のphing実行PATH、
/usr/local/php-5.3.4/bin/phing
のように入れると、
「/usr/local/php-5.3.4/bin/phingが存在しません。」
とエラーが出てしまいます。
(/usr/local/php-5.3.4/bin/と1つ上のディレクトリにしても同じでした・・)
入れようとしているものが違うのでしょうか?

まだ、hudsonプロセスのユーザは「hudson」なのですが、このユーザはhudsonサーバ用のみに作られたもので、ログインしてsu - hudsonをする事ができません(何か思い違いをしているのでしょうか・・)

投稿日時 - 2011-02-19 13:36:02

あなたにオススメの質問