CakePHP PluginをTravis CIに載せる

せっかくTravis CIという面白いサービスがあってPHPの環境も用意されているのに、Travis CIに載っているCakePHP Pluginが見つからなかったので載せてみた。

いろんなPluginを作ってた分、いろいろなパターンの.travis.ymlを書くことになったので、他のbakerの参考になるかも。

通常パターン(DBはMySQLだけ)

https://github.com/k1LoW/Yacsv/blob/master/.travis.yml


CakePHPのPluginをテストするのにはいくつか面倒なことがあって、1つはCakePHP自体がないとテストできないこと。

これは『wgetCakePHPを設置するところから書く』という直球な方法で対応可能。


もう1つの面倒なことはCakePHPのデフォルトのディレクトリ構成

CakePHPのPluginは、本来CakePHPのプロジェクト内に設置されるものだけど、今回はPluginのリポジトリのテストなのでトップディレクトリにPluginのフォルダがあることになる。

これは、CakePHPを設置後bootstrap.phpでApp::build()を使ってPluginのパスを再設定するのがポイント。

branchでCakePHPのメジャーバージョンが違う場合

https://github.com/k1LoW/controller_prefix/blob/master/.travis.yml
https://github.com/k1LoW/controller_prefix/blob/2.0/.travis.yml


それぞれのbranchで.travis.ymlを設置すればいい。単純。

ただ、CakePHP2.xのテストスイートはTravis CIがサポートしているPHPUnitを利用しているからいいけれども、
CakePHP1.xはSimpleTestなのでそれも設置の必要がある。wgetwget

複数の種類のDBでテストをしたい場合

https://github.com/k1LoW/glue/blob/master/.travis.yml


envのパターンを作って対応する。
当然接続DBのパターンも動的に変更する必要がある。
database.phpをechoを使って対応しようとしたけど、なぜかうまく通らなかったので別ファイルを設置する形になった。

というわけで

CakePHP Pluginをリポジトリに持っているbakerはみんなTravis CIに載せよう!