Travis CIに入門してPHPプロジェクトのCI / 継続的デリバリ環境を整える

Travis CIに入門してPHPプロジェクトのCI / 継続的デリバリ環境を整える

前の記事で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が実行してくれます

Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community
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してください

Coveralls - Code Coverage History and Statistics
sqb/EC-CUBE | Build #4 | Coveralls - Code Coverage History and Statistics

ここまで完全に無料で出来ました(´∀`)
Jenkinsでは更に色々なことが出来ますが、自分でサーバーを用意しなくてもここまで出来るというのは素晴らしいですね