$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

Perl + Travis CI + Coveralls (PrePANの対応)

CIサービスが結構出てきてる中、自分自身がまだ触ったこと無くて遅れてるなーと思ってたら

https://twitter.com/kentaro/status/433058168847884288

と言われたのでPrePANでTravis CIとCoverallsを使ってみた。こういうのみんなやってると思うので真新しいことはないけど自分用メモ。

PerlTravis CI

 手順としては

  1. Travis CI側で設定をON状態に
  2. repositoryに.travis.ymlを作成

で終わり。

Travis側設定

Travis CIにログインすると自分のprofileで設定を変えられるので、適当にボタンを押す。
f:id:shiba_yu36:20140211204853p:plain

.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でカバレッジ出せる。

 手順としては先ほどとほぼ同じで、

  1. Coveralls側で設定をON状態に
  2. .travis.ymlにCoveralls用設定を追加

するだけ。

Coveralls側で設定をON状態に

ログインすると自分のレポジトリ一覧からONにできる。
f:id:shiba_yu36:20140211213000p:plain

.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)

まとめ

いろいろやってくれているおかげで、PerlでCIしてカバレッジ取るの簡単ですね。ありがたい。