概要
Laravel5.4で作ったアプリケーションをTravisCIで自動テストし、Slackへ通知を行う。
TravisCI
- 継続的インテグレーションサービス。
- GithubのリポジトリへのPushに対して、自動でテストやビルドを実行してくれる。
- publicリポジトリは無料、privateリポジトリは有料です。
- サーバー不要!GithubアカウントさえあればOK!
TravisCI登録
- TravisCIから、Signupをクリック。
- Githubアカウントと連携する。

TravisCI連携
- organizationに所属している場合は登録時に表示される、そこのリポジトリでCIしたい場合は連携しておく。
- しばらく待つとリポジトリ一覧が表示されるので、CIしたいリポジトリを選択!
- TravisCI側の設定は完了!
Slack
通知用トークンの取得
- SlackのAppsからTravisCIをインストール。
- Settingで通知チャンネルを選択し、トークンを取得する。
Laravel5.4
- 前提として、migrationとseederを利用してDBデータを作成しており、そのデータでテストを行うとします。
- リポジトリルートでphpunitを実行するとテスト動作する状態とします。
テスト実行用の.env.testingファイルをリポジトリルートに作成
- TravisCI上でDBに接続するので、DB情報を記述しておく。
- USERNAMEはrootでパスワードは空、ポートもなしでいけます。
.env.testing
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=
DB_DATABASE={データベース名}
DB_USERNAME=root
DB_PASSWORD=
TravisCI用設定ファイルを作成する
- リポジトリのルートにTravisCI用のファイルを作成する。
.travis.yml
language: php
php:
- 7.1
services:
- mysql
before_script:
- mysql -uroot -e "create database {データベース名}"
script:
- cp .env.testing .env
- composer install
- php artisan migrate --seed
- phpunit
notifications:
slack: {Slackで取得したトークンを記述する}
language
: プログラム言語、そのまま。
php
: 言語で設定したphpのバージョンを指定、今回は7.1を利用しています。
services
: DBなど利用するミドルウェアを記述する。
before_script
: scriptの前に実行される処理、今回はDBを利用するのでテーブルを作成しておきます。
script
: ここにテストなど自動実行するコマンドを記述する。migration実行時に.envファイルがないとDB情報を取得できないので、.envをtestingからコピーして作成しておきます。
動作させてみる。
- あとはpushに反応して自動でymlの内容を実行してくれるので、適当にpushしてみる!
結果
- 終わったらSlackに通知が来る!
- Github上のPRにもTravisCIの結果が連携されるので、PRのテスト結果も一目瞭然です!
