前の記事でEC-CUBEのミラーをgithubに作成したのでこれを使ってTravis CIに入門してみます
Travis CIはオープンソースコミュニティのための継続的インテグレーションを無償で提供しているサイト
設定さえしておけばgithubにpushする度にUnitテストの実行など、指定した手順通りに実行してくれます
githubとTravis CIの連携
travis-ci.orgへ行ってgithubでSign Up
連携したいリポジトリを選んでください
.travis.yml を用意する
PHPのプロジェクトの場合大まかな内容はこうなります
~~~
language: php
php:
– 5.4
– 5.3
script:
– phpunit –configuration tests/phpunit.xml tests
~~~
phpunit –configuration tests/phpunit.xml tests
この行をローカルでユニットテストしているコマンドにすれば問題なく動くはずです
DBを使ったテストをする場合
mysqlとpostgres用に必要データベースを作成してテーブルを作るサンプルはこうなります
~~~
env:
– DB=mysql
– DB=pgsql
before_script:
– sh -c “if [ ‘$DB’ = ‘mysql’ ]; then mysql -e ‘CREATE DATABASE myapp_test;’; fi”
– sh -c “if [ ‘$DB’ = ‘mysql’ ]; then mysql myapp_test < install/sql/create_table_mysql.sql; fi"
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'create database myapp_test;' -U postgres; fi"
- sh -c "if [ '$DB' = 'pgsql' ]; then psql myapp_test < install/sql/create_table_pgsql.sql -U postgres; fi"
~~~
ファイルを作成する必要が有る場合
echoやcp、mkdirなども普通に使えます
~~~
before_script:
– echo “hogehoge” > config.php
– cp tests/require.php.jenkins tests/require.php
~~~
その他
composerやpearのインストールなんかも出来ます
詳しくはここを見ると書いてあります
Travis CI: Building a PHP project
githubにpushする
pushすると自動的に.travis.ymlに指定したとおりにTravis CIが実行してくれます
https://travis-ci.org/nobuhiko/EC-CUBE/jobs/6815512
コードカバレージを表示する
これだと黒い画面しか表示されないのでCoveralls – Code Coverage History and Statisticsを利用してコードカバレージを表示してみます
PHPのプロジェクト用にsatooshi/php-coveralls · GitHubがあるのでありがたく使わせて頂きます
composer.jsonを用意する
~~~
{
“require-dev”: {
“satooshi/php-coveralls”: “dev-master”
}
}
~~~
.coveralls.ymlを用意する
src_dirにどこを設定すればいいのかよくわからないのですが、テストしているソースがあるrootを指定すればいいのかな??
~~~
# for php-coveralls
src_dir: src
coverage_clover: build/logs/clover.xml
json_path: build/logs/coveralls-upload.json
~~~
.travis.ymlに追記する
・composerを使ってインストール
・logディレクトリの作成
・phpunitでcoverage-clover
・coverallsの実行
~~~
before_script:
– curl -s http://getcomposer.org/installer | php
– php composer.phar install –dev –no-interaction
script:
– mkdir -p build/logs
– phpunit –coverage-clover build/logs/clover.xml –configuration tests/phpunit.xml tests
after_script:
– php vendor/bin/coveralls -v
~~~
coverallsとgithubを連携する
あとはCoveralls – Code Coverage History and Statisticsでsigh upをして、リポジトリを指定するだけ
githubにpushする
ここまでの変更をpushしてください
sqb/EC-CUBE | Build #4 | Coveralls – Code Coverage History and Statistics
ここまで完全に無料で出来ました(´∀`)
Jenkinsでは更に色々なことが出来ますが、自分でサーバーを用意しなくてもここまで出来るというのは素晴らしいですね
コメント