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自体がないとテストできないこと。
これは『wgetでCakePHPを設置するところから書く』という直球な方法で対応可能。
もう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なのでそれも設置の必要がある。wget、wget。
複数の種類のDBでテストをしたい場合
https://github.com/k1LoW/glue/blob/master/.travis.yml
envのパターンを作って対応する。
当然接続DBのパターンも動的に変更する必要がある。
database.phpをechoを使って対応しようとしたけど、なぜかうまく通らなかったので別ファイルを設置する形になった。