Composerからプロジェクト内にインストールしたPhingをJenkinsで実行

by @dekokun on 2013/03/06 7:34

Tagged as: Composer, PHP, Phing, Jenkins.

皆さん、Apache AntをベースとしたPHPのプロジェクトビルドシステム、Phingを使ってますか?

今日はComposerでインストールしたPhingをJenkinsから起動する方法について

概要

Jenkinsからのビルド中にphp composer.phar installでvendorディレクトリ下にインストールしたPhingを使用しビルドを行う方法について。 ついでに、JenkinsのPhingプラグインのハマりどころなど(今回の解決策ではPhingプラグインを使ってないけど)

解答

ジョブの設定の「シェルの実行」から

vendor/bin/phing -logger phing.listener.DefaultLogger

-loggerの部分を指定しないとJenkinsの「コンソール出力」上で確認できるログに、ターミナル上で色をつけるための制御文字が出力され表示が崩れます。

めでたしめでたし。…こんな誰でも思いつく方法ですみませんすみません><

結論としては、JenkinsのPhingプラグインの現在の挙動では要件を満たせないという話なのでした。

JenkinsのPhingプラグインについて

  • 今回はプロジェクト内にビルドの一環でインストールするPhingを相対パス指定で実行したかったわけですが、Phingプラグインは絶対パスでの指定かつ、すでに存在しているPhingでないと実行してくれなかったため使うのはやめました。これはこれで妥当な挙動だとは思うので、pull requestを送るかどうかは要検討(Jenkinsのプラグインがどのようにできているかを知らないため、その勉強の意味でやってみようかしら)。
  • 今回の記事とは関係ないですが、JenkinsのPhingプラグインの設定のPHING_HOME欄の入力は間違えやすいので注意。Phingの実行ファイルを指定するのではなく、Phingのclassesとbinディレクトリが存在するディレクトリを指定する必要があります。phingの実行ファイルを指定しても、“/hoge/fuga/phing/bin/phingが存在しません。”というエラーが出ます。ググったところ同じような現象で悩んでいる人がちらほらいるようですね。

あとがき

どうでもいいですが、Phing使ってるPHPユーザってどれくらいいるんだろうか…

Phingのプロジェクトを作成しながら、「2013年にもなってなぜAntのことを調べているんだ私は」という思いがひしひしとしました。

みんなMaven for PHP使ってたりするのかな。

comments powered by Disqus