今日やること
これまで構築した環境でGitHubにPushしたら
自動でjenkinsさんにbehatのテストシナリオを走らせてもらう。
さらに結果もSlackへも通知する。
behatのテスト結果をjenkinsで認識するには
Junit形式でxmlを読ませるのが必要らしいのでその設定手順をやります。
環境
前回Laravelでbehatを使うためBehat-Laravel-Extensionを導入したところ
Laravel5.1でbehatを使ってみるの状態から引き続き作業を行う。
サーバー側のjenkins設定はこちらの記事で行った。
-
Jenkinsのインストールと初期設定
さくらのVPSにjenkinsをインストールして、テストOKで自動デプロイする環境を構築する(1) -
GitHubにPushしたらJenkins動かす
さくらのVPSにjenkinsをインストールして、テストOKで自動デプロイする環境を構築する(2) -
GithubにPushしたらサーバーに自動デプロイ
さくらのVPSにjenkinsをインストールして、テストOKで自動デプロイする環境を構築する(3) -
Slackにテスト結果を通知
さくらのVPSにjenkinsをインストールして、テストOKで自動デプロイする環境を構築する(4)
作業
主な設定はこちらの方の記事が参考になりました。というかそのままいけました。
behat 3.0とJenkins CIでBDDに挑戦(5)
Junit formatter for Behat 3.x
2015年7月15日時点でbehat-laravel-extensionをcomposerで入れた際、
behat3.0.15が入りますが、このバージョンではJunitでの出力に対応していません。
masterには対応したPRがマージされているのでこちらを使用します。
behatのバージョンをJunitに対応したバージョンへ変更する
masterブランチから3.0.*の開発中をもってくるように
以下のコマンドで変更します。
composer require behat/behat:~3.0@dev --dev
behatが入れ替わって
./vendor/behat/behat/features/junit_format.feature
などJunit関連のファイルが含まれているかと思います。
Junit形式出力してみる
以下のコマンドでテスト結果をxmlで出力してみます。
./vendor/behat/behat/bin/behat --format=junit --out=.
実行後、default.xmlが生成されていれば成功です。
<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="default">
<testsuite name="show laravel home" tests="1" skipped="0" failures="0" errors="0">
<testcase name="Home" status="passed"></testcase>
</testsuite>
</testsuites>
GitHubにPushしてサーバーに反映させる
すでに自動デプロイさせるように設定しているのでPushするだけで反映。
サーバー側でcomposer updateを実行する
サーバー側でもbehatを入れ替えなければいけませんので、
composer update
を実行して入れ替えを行います。
Junit形式で出力してみる
サーバー側でも正常に動くか試してみましょう。
Jenkinsに設定を行う
ジョブの設定画面を開き、シェルの実行にテスト&結果をJunit形式で出力するコマンドを入れます。
Junitの結果を読むのにWORKSPACEにJunitを出力すると後の指定が楽ですね。
具体的に以下のように設定しました。
※あれ?これじゃテストだめでもデプロイしちゃう気がしてならない。追々調整します。
ビルド実行してみる
slackへ通知が流れます。
一番上にTest Status: Passedってでてますね!
無事設定完了です。