<< Prev Page Next Page >>

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


CentOS5.5でHudsonでPhingでPHPUnitでCloverな生活

HudsonいいねHudson。Jenkinsに名前変わったみたいなのでまた後で乗り換えるけれども。

昔某ソフトハウスにいた頃、まだmavenもなかった頃、頑張ってantを駆使してJUnitとJCoverageをデイリービルドで回して計測してエラーがあったらみんなにメールが飛ぶって、そういう環境を自分でも作ったし使っていたのに、今の会社で全然そういうことをしていないのが嫌で嫌で。

そしたらPHP用のAntであるところのPhingもあるしデイリービルドをやってくれるHudsonもあるし、これはと思って1日頑張ってみた。OSはCentOS5.5。

1.CentOS5.5にPHP5.3を入れる

CentOS 5系でPHP5.3系やMySQL5.1系を使いたい場合 - RX-7乗りの適当な日々
こちらのサイトを参考に、--enablerepo=remiで
  • php
  • php-devel
  • php-pecl-xdebug
  • php-mbstring
  • php-pdo
といろんなものを全部入れる。xdebugはコードカバレージ計測のために必須。yumのおかげで便利な世の中だよ。

2.PHPUnitをインストール

# pear install phpunit/PHPUnit

3.phingをインストール

# pear channel-discover pear.phing.info # pear install phing/phing
ここで足りないものがあれば入れておく。

4.ちょっとbuild.xml書いてみる

<?xml version="1.0"?> <project name="minfew-set" default="test" basedir="."> <target name="lint"> <phplint> <fileset dir="src"> <exclude name="includes/mfwork/**" /> <exclude name="includes/PEAR/**" /> <exclude name="includes/smarty/**" /> <include name="**/*.php"/> </fileset> </phplint> </target> </project>
で、
$ phing
おお、実行された。よしよし。

5.Hudsonインストール + tomcatにデプロイ

rpm一発でいけた。あっけなく起動も成功。すごい。でもサービス起動しようとするとなんか固まっちゃって怪しいのでtomcatに載せることにした。

/etc/tomcat6/tomcat.conf に、
HUDSON_HOME = /var/lib/hudson
を追記。hudson.warをtomcat6にデプロイしていっちょあがり。
あと、hudson単体で一度起動している場合、/var/lib/hudsonのownerがhudsonになっているので、
# chown -R tomcat.tomcat /var/lib/hudson
しないとビルド実行でハマる。

6.ジョブを登録

俺プロジェクトをHudsonに「新規ジョブ登録」する。もちろんプロジェクトはいくつも登録することができる。
プロジェクトの設定でSVNのURLを記入して「ビルド実行」・・・うんもうすごい。えらい。「ワークスペース」にソースコードをチェックアウトしてくれている。

7.xUnit、Clover、phingプラグインをインストール

HudsonでPHPのユニットテスト - ssogabeの日記
HudsonでPHPメモ (1) PHPUnitとカバレッジ - ssogabeの日記
こちらのサイトを超、超参考に!というかほとんどこのまま。Hudsonの画面上でプラグインをインストール。プラグイン画面でチェックしてボタン押すだけの簡単なお仕事。
なお、上記参考サイト様ではphpunitをexecで実行しているけど、その後、PHPUnitTaskがclover対応してくれたので、ちゃんとphpunitタグで書いてスムーズにいけます。

8.プロジェクトの設定

hudson project1
定期実行する設定と、Phing呼び出し設定。
ちなみに、build.xmlのphpdocターゲットはこんな感じ。APIリファレンスが毎日どんどん作られていくよ!
<target name="phpdoc"> <phpdoc title="SAT Library Documentation" destdir="apidocs" sourcecode="false" output="HTML:Smarty:PHP"> <fileset dir="src"> <include name="includes/minfew/**/*.php" /> <include name="includes/pmi/**/*.php" /> <include name="includes/satlib/**/*.php" /> </fileset> <projdocfileset dir="."> <include name="README" /> <include name="INSTALL" /> <include name="CHANGELOG" /> </projdocfileset> </phpdoc> </target>

testターゲットはこう。カバレージ出力のためにcoverage-setupも必要みたい。
<target name="clean"> <delete dir="reports" includeemptydirs="true" /> <delete dir="clover" includeemptydirs="true" /> </target> <target name="coverage" depends="clean"> <mkdir dir="reports/tests" /> <mkdir dir="clover" /> <coverage-setup database="./reports/coverage.db"> <fileset dir="src/includes/"> <include name="**/satlib/classes/*.php"/> <include name="**/minfew/classes/core/*.php"/> <include name="**/minfew/classes/support/*.php"/> <include name="*.php"/> </fileset> </coverage-setup> <phpunit haltonfailure="true" printsummary="true" codecoverage="true"> <formatter todir="reports" type="clover"/> <formatter todir="reports" type="xml"/> <batchtest> <fileset dir="./test"> <include name="*Test.php"/> </fileset> </batchtest> </phpunit> <coverage-report outfile="reports/coverage.xml"> <report todir="clover" /> </coverage-report> </target>

で、phpunitとcloverのレポートを結果画面に出力させるためのオプションを設定。うわあこんな簡単なのかー。
Hudson project2

ここまでの設定で、こんな画面ができあがる!ブラボー!
hudson

いや、まあ、ここまでくるまでにはエラーメッセージと格闘しながらいろいろ頑張った。基本的にはエラーメッセージをよーーく見て、「これをするには何かが足りない」と言ってるので、それをインストールするという流れ。yumとpearをひたすらたたき続ける。あと、PHPソースコードのrequireとかにエラーがあると、カバレージがコケるので、ソースコードも直し直ししながらの道のりでした。ああ、これでやっとUnitTestをどんどん書いていくだけの気持ちいい世界にたどり着いた。


この記事に対するコメント

この記事に対するコメントの投稿



管理者にだけ表示を許可する

この記事に対するトラックバック

トラックバックURL
http://tockri.blog78.fc2.com/tb.php/240-1a0dd15d
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。