酒と泪とRubyとRailsと

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

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

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

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

(2016/6/27 22:20) deppbot を追加


(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
11
12
13
14
language: ruby
rvm:
- 2.3.0
- 2.2.4
bundler_args: --jobs=2
script:
script:
  - bundle exec rake db:setup
  - bundle exec rake spec
cache: bundler
services:
  - postgresql
addons:
  postgresql: "9.4"

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

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

(6) deppbot

deppbot

deppbot』は、RailsのGemでセキュリティに関する アップデートがあった場合に自動的にGitHubでプルリクエストを作ってくれるボットサービスです。 開発しているのは RedDotRubyConf のオーガナイザーの @winstonyw と台湾が産んだ天才Rubyist @JuanitoFatas。 ちなみに、ふたりとも日本語がわかるのでサポートもバッチリです^^

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

Scrutinizer

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

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

CodeShip

スクリーンショット 2014-11-25 21.49.47

CIやDeployをやってくれるサービス。特徴はこんな感じです!

(1) OSSなら完全無料で使える
(2) privateリポジトリでも5リポジトリ、100回/月のbuildまで無料で実行
(3) SlackやHipChat、メール、Campfireなどに通知を出せる
(4) SSHでログインでき、ブラックボックスにはならない

VADDY

スクリーンショット 2014-11-26 20.45.59

このサービスは、CIツールと連携してWebサイトの脆弱性診断をしてくれるサービスです。日本発のサービスで、現在はスキャン回数無制限で無料で 使えるようです。まずは試してみると面白そう。

Inch CI - Documentation badges

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

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

Semaphore

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

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

Analytics for GitHub - Bitdeli

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

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

コマンドラインから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でコードを公開する時に便利なサービス

変更来歴

(11-25 22:05) CodeShipを追加
(11-26 21:20) VADDYを追加
(12-06 14:55) 記述の微調整
(2016/6/27 22:20) deppbot を追加

おすすめの書籍