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にします。
ユーザー登録したら、連携対象のプロジェクトフォルダ直下でローカルで以下のコマンドを実行。
1 2 3 4 5 |
|
.travis.yml
が作成されたら、こんな感じで編集。
1 2 3 4 5 6 7 8 9 10 |
|
詳しい設定や編集方法はこちらがわかりやすいです。
githubでgemを公開する時に使いたいバッジ - くりにっき
Travis CI: Building a Ruby Project
設定画完了したら、.travis.yml
が正しいかをGem
『travis-ci/travis-lint』
でチェックします。
1 2 3 4 |
|
設定画完了したら、.travis.yml
などをGitHubにPushするとTravis CIがテストを開始してくれます。
1 2 3 4 5 6 |
|
travis open
を実行するとブラウザが開いて、travisの実行プロセス/結果を確認できます。
あとはその結果をバッチとしてGitHubのREADMEに貼り付けることができます。バッチのタグはTravisから取得できます!
(2) Coveralls
『Coveralls』は、テストのカバレッジ率を通知してくれるサービスです。 開発をしていく過程でテストがおざなりにならないように管理できるようになります。対応している言語は次の通りです。
Ruby/Rails、Python、PHP、Node.js、C/C++、Scala
まずは『Coveralls』にログインしてADD REPO
して、連携対象のリポジトリを設定します。
設定したら、Gemfile
に以下を追加してbundle install
を実行。
1 2 3 |
|
あとspec/spec_helper.rb
か、test/test_helper.rb
に以下の設定を追記。
1 2 3 4 5 6 7 |
|
あとはGitHubにPushして、Travis CIが実行されるとCoverallと連携してくれます。
1 2 3 4 |
|
『Coveralls』でも同じくバッチを設定することができます。 Coveralls内の対応するリポジトリのページの右上の『BADGE URLS』をクリックしてタグをREADMEに追記します。
(3) Code Climate
『Code Climate』はコードの重複や複雑すぎる部分などを静的解析してくれて、 結果を表示してくれるGemです。コードの品質を向上させるためのアドバイスをくれるサービスです!対応している言語は次の3つ。
Ruby, JavaScript, and PHP (beta)
『Code Climate』にGitHub アカウントでログインして、Publicなレポジトリなら、 自分のレポジトリを登録すると自動で静的解析をしてくれるので特に設定は必要ありません。 ソースコードの中から問題がある部分をA-Dで判定してくれたり、4点満点でソースコードの品質を判定してくれたりします。
バッチのタグも右側のバッチをクリックすると取得できるのでREADMEに追加しましょう!
もし、Codeのカバレッジも含めて連携させたい場合はまずGemfile
に以下のように追加します。
1 2 3 |
|
次にspec/spec_helper.rb
か、test/test_helper.rb
に以下の設定を追記。
1 2 3 4 5 6 |
|
Codeclimateの対象レポジトリのページの右側にCodeCoverageの設定があるのでクリックすると、
CODECLIMATE_REPO_TOKEN
があるのでその設定を.travis.ymlのscript
の設定を修正。
(xxxxにTOKENを入れてください。この設定は本当は良くない気がします。もっといい方法知ってる人がいたら教えて下さい)
1
|
|
これでカバレッジも含めて一括でチェックできるようになります!
(4) RubyGems.org
こちらもRuby限定ですが、RubyGems.orgの自分が公開しているgemのページからもバージョン情報が書かれたバッチを取得する事ができます。 まずは右下のメニューの『Badge』をクリックして、タグを取得してREADMEに追記します。
地味にPlugin Authorとしてテンションが上がります^^
(5) Gemnasium
『Gemnasium』は使っているGemが最新かどうかをチェックしてくれるRuby限定のサービスです。
使い方は『Gemnasium』にGitHubアカウントでログインして、対象のレポジトリを選択して同期します。
あとはリポジトリと同期するとGemのバージョンを判定して結果を出してくれます。
ちなみにバッチは右側の設定(歯車アイコン)をクリックして、タブのBadgeを選択すると取得できます。
その他面白そうなサービス
Scrutinizer
CIでテストを実行してくれるだけではなく、コード解析や自動でソースコードレビューをしてくれるそうです。しかもpublicリポジトリは無料!
Analytics for GitHub - Bitdeli
GitHubのリポジトリのアクセス解析をしてくれるサービスだそう。バッチを追加するだけなので、簡単に導入できます!
Inch CI - Documentation badges
Rubyのプロジェクト限定ですが、ソースにどれだけコメントが書かれているかを計測してくれるサービス。ある程度人気が出て コメントをしっかり管理するようになったら使いたい。
Semaphore
プロジェクトをタイムライン風に表示してくれたり、CI、デプロイ、通知周りをサポートしてくれるサービス。 アクティビティなどをバッチにして表示してくれるそうです(未確認)
コマンドラインからTravisにログイン
コマンドラインからTravisにログインしたい場合は、以下のコマンドを実行します。(GitHubのIDとPWを利用)
1
|
|
Special Thanks
githubでgemを公開する時に使いたいバッジ - くりにっき
Travis CIとCoverallsとCode Climateを使ってGitHubリポジトリにバッジを付ける - アインシュタインの電話番号
codeclimate/ruby-test-reporter - GitHub
Middleman Blog を Travis-CI で GitHub Pages に継続デプロイ - ja.ngs.io