CIサービスが結構出てきてる中、自分自身がまだ触ったこと無くて遅れてるなーと思ってたら
https://twitter.com/kentaro/status/433058168847884288
と言われたのでPrePANでTravis CIとCoverallsを使ってみた。こういうのみんなやってると思うので真新しいことはないけど自分用メモ。
PerlとTravis CI
手順としては
で終わり。
.travis.ymlの編集
その後.travis.ymlを編集。参考例は以下。
language: perl # perlを利用 # どのperlを使ってbuildするか、複数書いておくとそれぞれでテストが走る perl: - "5.16" # どのserviceを利用するか # PrePANではredisを使っているのでredis-serverを入力、MySQLは初めから起動してるので設定いらない # http://docs.travis-ci.com/user/database-setup/ も参照 services: - redis-server # 環境変数の設定 # 複数登録しておくと perl version x envの全ての組み合わせでテストされる env: - PREPAN_ENV=travis # Cartonを入れたあと、carotn installを走らせる before_install: - cpanm Carton install: - carton install # テスト前に実行するコマンド # このスクリプトの中ではDBのセットアップとかしてる before_script: - script/setup-travis.sh # テスト script: - carton exec prove -lrv t # 通知系 notifications: email: recipients: - shibayu36@gmail.com on_success: change on_failure: always irc: "irc.perl.org#prepan"
一応これをtravis-lintというのに通すことで設定が正しいか確認することができる。
テスト実行
ここまで出来たら後はpushするだけでテストが実行される。デフォルトで全ブランチテストしてくれて便利。
https://travis-ci.org/CPAN-API/prepan ここで結果が見える。
あと以下の様なのをREADME.mdに貼っておくとステータス画像が出て便利。
[![Build Status](https://travis-ci.org/CPAN-API/prepan.png?branch=master)](https://travis-ci.org/CPAN-API/prepan)
PerlとCoveralls
CoverallsというのはGithubのプロジェクトのカバレッジレポートを出してくれるやつ。Travis CI使っている時はDevel::Cover::Report::Coverallsを使うことで簡単にCoverallsでカバレッジ出せる。
手順としては先ほどとほぼ同じで、
- Coveralls側で設定をON状態に
- .travis.ymlにCoveralls用設定を追加
するだけ。
Coveralls側で設定をON状態に
ログインすると自分のレポジトリ一覧からONにできる。
.travis.ymlにCoveralls用設定を追加
先ほどの.travis.ymlをちょっと変えて、prove時にDevel::Coverでカバレッジ取るのと、coverallsにレポートを送る部分を追加する。Devel::Cover::Report::Coverallsをcpanfileに入れておく必要はあり。
# localとt以下はカバレッジに入れない script: - HARNESS_PERL_SWITCHES="-MDevel::Cover=+ignore,^local/|^t/" carton exec prove -lrv t # coverallsにreportを送る after_success: - carton exec -- cover -report coveralls
これで https://coveralls.io/r/CPAN-API/prepan で結果が見える。カバレッジ68%というのが可視化されて怒られそう。
あと以下のようなのをREADME.mdに貼っておくとカバレッジ状況の画像が出て便利。
[![Coverage Status](https://coveralls.io/repos/CPAN-API/prepan/badge.png)](https://coveralls.io/r/CPAN-API/prepan)