PHPの継続的インテグレーション環境を無料で簡単にセットアップする方法
利用するサービス
事前準備
- GitHubアカウントの取得
- リポジトリ作成
- RubyGemのインストール(Travisコマンドインストールに使用)
Travis CIのアカウント取得とリポジトリ選択
- 右上のリンクからGitHubアカウントでサインイン
- テストしたいリポジトリをONに変更
テストコード
- tests/HogeTest.php
- tests/bootstrap.php
- Fuga.php
tests/HogeTest.php
- 1 + 1 = 2のテスト結果を返す。
- Fugaクラスのindexメソッドを呼び出してTrueを確認する。
tests/HogeTest.php
class HogeTest extends PHPUnit_Framework_TestCase {
function testHoge() {
$this->assertEquals(2, 1 + 1);
}
function testFuga() {
$fuga = new Fuga();
$this->assertTrue($fuga->index());
}
}
tests/bootstrap.php
- newされたクラスを呼び出すモジュール
- phpunit.xmlでパスを指定
tests/bootstrap.php
function loader($class)
{
$file = $class . '.php';
if (file_exists($file)) {
require $file;
}
}
spl_autoload_register('loader');
Fuga.php
-
index()
:trueを返す。
Fuga.php
class Fuga {
public function index() {
return true;
}
}
設定ファイル
- tests/phpunit.xml
- composer.json
- .coveralls.yml
- .travis.yml
phpunit.xml
- phpunit実行環境の設定ファイル
phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
colors="true"
bootstrap="bootstrap.php">
<testsuite name="Hoge">
<directory>./</directory>
</testsuite>
<logging>
<log type="coverage-clover" target="build/logs/clover.xml"/>
</logging>
</phpunit>
composer.json
- coverallsの設定は php-coverallsを利用させて頂いた。
composer.json
{
"require-dev": {
"satooshi/php-coveralls": "dev-master"
}
}
coveralls.yml
- coverallsの設定ファイル
.coveralls.yml
src_dir: ./
coverage_clover: build/logs/clover.xml
json_path: build/logs/coveralls-upload.json
.travis.yml
- Travis CIの設定ファイル
-
php:
バージョン指定 -
before_script:
事前にcomposerをインストール -
script:
phpunitを実行 -
after_script:
coveralls用モジュールを起動 -
notifications:
slackへの通知設定
.travis.yml
language: php
php:
- 5.3
- 5.4
- 5.5
- hhvm
before_script:
- curl -s http://getcomposer.org/installer | php
- php composer.phar install --dev --prefer-source
script:
- mkdir -p build/logs
- phpunit --coverage-clover build/logs/clover.xml --configuration tests/phpunit.xml tests
after_script:
- php vendor/bin/coveralls -v
notifications:
slack:
rooms:
secure: your_token_key
- notificationの設定はConfiguring Build Notificationsを参照
- your_token_keyを暗号化する方法はEncryption keysを参照
※ rbenvを使ってる場合はrehashをお忘れなく
GitHubにPush
Travis CI
- .travis.ci.ymlで設定した各バージョンごとにテスト実行
- テスト内容の詳細リンク
- build passバッジの画像生成リンク
- テスト再実行ボタン
- テスト結果通知はメールではうっとうしいのでSlackで確認(後述)
- コマンドラインでPHPUnit実行したときと同じ画面結果
- コードカバレッジは見えないので、CoverAllsを利用する
CoverAlls
- 各バージョンごとのコードカバレッジを閲覧できる
Slack
- Travic CIの実行結果へのリンク、GitHubコミット時のcompare画面へのリンク、テスト結果を通知