Laravel5.4 + TravisCI + Slackで自動テストを行う


概要

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のテスト結果も一目瞭然です!