酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Travis CI、Coveralls、Code Climate、RubyGems、Gemnasiumと連携させよう!

RubyGemsなどのライブラリをOSSで公開した時の醍醐味として、Travis CIやCode Climateなどのコードの品質担保の仕組みを無料で使うことができるということがあります。ということで先日公開した『events_jp』として公開したを今回、以下のツールに連携させてみました!

  (1) travisCI
  (2) Coveralls
  (3) Code Climate
  (4) RubyGems.org
  (5) Gemnasium

(1) Travis CI

Travis CI』はGitHubにPushすると、 RubyのバージョンやDBのバージョンなど複数の環境でテストを自動で実行してくれる超有名なCIサービスです。 対応している言語は次の通りです。有名どころはほとんど対応してそう。

C、C++、Clojure、Erlang、Go、Groovy、Haskell、Java、
JavaScript(Node.js)、Objective-C、Perl、PHP、Python、Ruby、Scala

まずは、『Travis CI』でGitHubアカウントでユーザー登録します。 そして、ユーザー登録が完了したら、『Profile - Travis CI』で sync nowして、連携許可のスイッチをONにします。

スクリーンショット_2014-11-24_14_21_36

ユーザー登録したら、連携対象のプロジェクトフォルダ直下でローカルで以下のコマンドを実行。

1
2
3
4
5
# gem のインストール
gem install travis

# .travis.ymlの作成
travis init

.travis.ymlが作成されたら、こんな感じで編集。

1
2
3
4
5
6
7
8
9
10
language: ruby
rvm:
  - 2.0.0
  - 2.1.0
  - 2.1.4
bundler_args: --jobs=2
script: bundle exec rspec
branches:
  only:
    - master

詳しい設定や編集方法はこちらがわかりやすいです。

githubでgemを公開する時に使いたいバッジ - くりにっき

Travis CI: Building a Ruby Project

設定画完了したら、.travis.ymlが正しいかをGem 『travis-ci/travis-lint』 でチェックします。

1
2
3
4
gem install travis-lint
travis lint
Shell completion not installed. Would you like to like to install it now? |y| y
Hooray, .travis.yml looks valid :)

設定画完了したら、.travis.ymlなどをGitHubにPushするとTravis CIがテストを開始してくれます。

1
2
3
4
5
6
git add .travis.yml
git commit -m "Add .travis.yml"
git push origin master

# ブラウザでtravisの結果を表示
travis open

travis openを実行するとブラウザが開いて、travisの実行プロセス/結果を確認できます。

スクリーンショット_2014-11-24_14_36_09

あとはその結果をバッチとしてGitHubのREADMEに貼り付けることができます。バッチのタグはTravisから取得できます!

スクリーンショット_2014-11-24_14_47_35

(2) Coveralls

Coveralls』は、テストのカバレッジ率を通知してくれるサービスです。 開発をしていく過程でテストがおざなりにならないように管理できるようになります。対応している言語は次の通りです。

Ruby/Rails、Python、PHP、Node.js、C/C++、Scala

まずは『Coveralls』にログインしてADD REPO して、連携対象のリポジトリを設定します。

スクリーンショット_2014-11-24_15_45_20

設定したら、Gemfileに以下を追加してbundle installを実行。

1
2
3
group :test do
  gem 'coveralls', require: false
end

あとspec/spec_helper.rbか、test/test_helper.rbに以下の設定を追記。

1
2
3
4
5
6
7
if ENV['CI']
  require 'coveralls'
  Coveralls.wear!

  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[Coveralls::SimpleCov::Formatter]
  SimpleCov.start 'test_frameworks'
end

あとはGitHubにPushして、Travis CIが実行されるとCoverallと連携してくれます。

1
2
3
4
git add -A
git commit -m 'Add Coveralls settings'
git push origin master
open https://coveralls.io/r/morizyun/events_jp

スクリーンショット_2014-11-24_15_59_36

Coveralls』でも同じくバッチを設定することができます。 Coveralls内の対応するリポジトリのページの右上の『BADGE URLS』をクリックしてタグをREADMEに追記します。

(3) Code Climate

Code Climate』はコードの重複や複雑すぎる部分などを静的解析してくれて、 結果を表示してくれるGemです。コードの品質を向上させるためのアドバイスをくれるサービスです!対応している言語は次の3つ。

Ruby, JavaScript, and PHP (beta)

Code Climate』にGitHub アカウントでログインして、Publicなレポジトリなら、 自分のレポジトリを登録すると自動で静的解析をしてくれるので特に設定は必要ありません。 ソースコードの中から問題がある部分をA-Dで判定してくれたり、4点満点でソースコードの品質を判定してくれたりします。

スクリーンショット 2014-11-24 16.26.35

バッチのタグも右側のバッチをクリックすると取得できるのでREADMEに追加しましょう!

スクリーンショット_2014-11-24_16_23_44

もし、Codeのカバレッジも含めて連携させたい場合はまずGemfileに以下のように追加します。

1
2
3
group :test do
  gem 'codeclimate-test-reporter', require: false
end

次にspec/spec_helper.rbか、test/test_helper.rbに以下の設定を追記。

1
2
3
4
5
6
if ENV['CI']
  require 'codeclimate-test-reporter'
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[CodeClimate::TestReporter::Formatter]
  SimpleCov.start 'test_frameworks'
  CodeClimate::TestReporter.start
end

Codeclimateの対象レポジトリのページの右側にCodeCoverageの設定があるのでクリックすると、 CODECLIMATE_REPO_TOKENがあるのでその設定を.travis.ymlのscriptの設定を修正。
(xxxxにTOKENを入れてください。この設定は本当は良くない気がします。もっといい方法知ってる人がいたら教えて下さい)

1
script: CODECLIMATE_REPO_TOKEN=xxxx bundle exec rspec

これでカバレッジも含めて一括でチェックできるようになります!

スクリーンショット_2014-11-24_16_42_33

(4) RubyGems.org

こちらもRuby限定ですが、RubyGems.orgの自分が公開しているgemのページからもバージョン情報が書かれたバッチを取得する事ができます。 まずは右下のメニューの『Badge』をクリックして、タグを取得してREADMEに追記します。

スクリーンショット_2014-11-24_14_56_43

スクリーンショット_2014-11-24_14_58_55

地味にPlugin Authorとしてテンションが上がります^^

(5) Gemnasium

Gemnasium』は使っているGemが最新かどうかをチェックしてくれるRuby限定のサービスです。

使い方は『Gemnasium』にGitHubアカウントでログインして、対象のレポジトリを選択して同期します。

スクリーンショット_2014-11-24_16_52_13

あとはリポジトリと同期するとGemのバージョンを判定して結果を出してくれます。

スクリーンショット 2014-11-24 16.54.38

ちなみにバッチは右側の設定(歯車アイコン)をクリックして、タブのBadgeを選択すると取得できます。

スクリーンショット 2014-11-24 16.58.03

その他面白そうなサービス

Scrutinizer

スクリーンショット 2014-11-24 17.22.54

CIでテストを実行してくれるだけではなく、コード解析や自動でソースコードレビューをしてくれるそうです。しかもpublicリポジトリは無料!

Analytics for GitHub - Bitdeli

スクリーンショット 2014-11-24 17.27.29

GitHubのリポジトリのアクセス解析をしてくれるサービスだそう。バッチを追加するだけなので、簡単に導入できます!

Inch CI - Documentation badges

スクリーンショット 2014-11-24 17.26.17

Rubyのプロジェクト限定ですが、ソースにどれだけコメントが書かれているかを計測してくれるサービス。ある程度人気が出て コメントをしっかり管理するようになったら使いたい。

Semaphore

スクリーンショット 2014-11-24 17.32.13

プロジェクトをタイムライン風に表示してくれたり、CI、デプロイ、通知周りをサポートしてくれるサービス。 アクティビティなどをバッチにして表示してくれるそうです(未確認)

コマンドラインからTravisにログイン

コマンドラインからTravisにログインしたい場合は、以下のコマンドを実行します。(GitHubのIDとPWを利用)

1
travis login --pro

Special Thanks

githubでgemを公開する時に使いたいバッジ - くりにっき

Travis CIとCoverallsとCode Climateを使ってGitHubリポジトリにバッジを付ける - アインシュタインの電話番号

codeclimate/ruby-test-reporter - GitHub

Middleman Blog を Travis-CI で GitHub Pages に継続デプロイ - ja.ngs.io

CoverallsのCoveralls BadgeをGitHubに表示する方法

Githubでコードを公開する時に便利なサービス

押さえておきたい書籍

いかがだったでしょうか?
もし説明がわかりにくかったり、間違っている場所があればぜひ一言!

Comments