Travis CIで継続インテグレーション、Coverallsでテストカバレッジ確認
Travis CIという継続インテグレーション(自動ビルドや自動テストを継続的に行う)サービスを使ってみました。
https://travis-ci.org/
1. 動作確認対象レポジトリの用意
Travis CI上でビルドやテストを実行するには、自身のGitHubのアカウントの対象となるレポジトリが必要になりますが、
今回は動作確認を目的としているので、以下のレポジトリをfolkし使用させていただきました。
https://github.com/skinny-framework/skinny-framework-example
以下のように本家のGitHubのサイトからforlし、自身のGitHubのアカウントのレポジトリとします。
2. Travis CI上でのGitHubレポジトリの有効化
この状態でTravis CIにログイン(ログインには、GitHubアカウントが必要)すると
アカウント設定の画面にて、自身のレポジトリ一覧が表示されますので、
skinny-framework-exampleレポジトリのTravic CIとの連携をONにします。
OFFの状態からONにしました。
これでTravis CIを使う準備はできましたが、デフォルト設定では、レポジトリに対し
なんらかのcommitのpushをフックしてビルドが起動するようですので、
まずはなんでもいいのでcommitを作りpushします。
3. Travis CIの設定ファイル
ここcommitを作る前にTravis CIの設定ファイルを確認します。
プロジェクト直下の.travis.xmlというファイルが該当します。
動作確認した状態では以下のようなものになっていました。
language: scala scala: 2.11.5 sudo: false jdk: oraclejdk8 script: "./travis.sh" after_success: sbt coveralls env: global: secure: ほげほげ
ここで特筆すべきは、scriptの項目がTravis CIでテストを実行させるコマンドになります。
travis.shの中身を見ると以下のようになっていました。
#!/bin/bash ./skinny db:migrate test && ./skinny test:coverage
ここは使用するフレームワークなどにより記載内容は異なるものになると思います。
after_successについては、テスト実行時に実行される処理です。
ここでは、sbtのcoverallsプラグインを使用して、coverallsにテスト結果を送信しています。
env.global.secureは、coverallsで使用するレポジトリを特定するためのものです。
coverallsから発行されるREPO_TOKENをそのまま記載しGitHubに載せるのは望ましくないとのことから
このように暗号化して記載することが推奨されているようです。
参考 ・Go + Travis CI + Coveralls でCI環境を作る http://qiita.com/dmnlk/items/3fb4e0abb98e39fee275 「Tokenを暗号化してセキュアにする」のところ。
4. フック用新規commitの作成(Coverallsのsecure設定)
新規commitは、ダミーファイルを作るなりどんな変更でもいいのですが、
さきの.travis.xmlのenv.global.secureは、レポジトリ毎に有効な値のため、
folkした今回のレポジトリでは、オリジナルの値は使えません。
そのため今回のレポジトリ用の値を取得します。
まずはCoverallsのサイトにアクセスし、REPO TOKENの値をメモします。
ここでは、Travis CIと同様にまずは、レポジトリを有効にします。
(REPO TOKENの値は、ログインしていればCoverallsのレポジトリ画面右側に表示されてるようです)
この値をもとにenv.global.secureの値を生成します。
実行にはRubyの動作環境が必要です。
>gem install travis
travisパッケージをインストールし、以下のコマンドを実行します。
>travis encrypt COVERALLS_TOKEN=メモしたREPO_TOKENの値
画面上にsecureの値が表示されるため、これを.travis.xmlに上書きコピーします。
>git commit
適当にコミットログを記載し、commitします。
>git push
clone元へのpushなので、デフォルトで引数不要です。
このあたりは単純にGitHubの話ですね。
5. Travis CI,Coverallsサイト上での結果確認
Travis CI上で処理が実施されているはずなので、サイトにアクセスしてみます。
今回のケースでは以下のURLとなります。(見るだけであればログインせずとも誰でも可能なようです)
https://travis-ci.org/soha/skinny-framework-example
ずらずらと処理が実行されています。
Travis内で実行されている主な処理は以下の通りです。
$ git clone --depth=50 --branch=master git://github.com/soha/skinny-framework-example.git soha/skinny-framework-example
GitHubより該当ソースをcloneしています。(Travis内のワークディレクトリに)
$ export COVERALLS_TOKEN=[secure]
Coverallsの認証設定をしています。
$ jdk_switcher use oraclejdk8 $ export JVM_OPTS=@/etc/sbt/jvmopts $ export SBT_OPTS=@/etc/sbt/sbtopts $ java -version $ javac -version
.travis.xmlの設定に従いJava環境まわりの設定をしています。
$ ./travis.sh
テストscriptの実行
$ sbt coveralls
Coverallsへのテスト結果反映
今回のCoverallsのサイトのURLは、以下の通りです。
こちらもログインせずとも参照はできるようです。
https://coveralls.io/r/soha/skinny-framework-example