Hound CIを自前でホスティングする

エンジニアの出口 (@dex1t)です。

プルリクエスト毎に、コードの品質をチェックしてくれるHound CIですが、

ということで、自前でホスティングしてみました。Hound自体は、こちらで公開されています。

Houndを手元で動かすにあたって、基本はこちらのドキュメントに沿って進めていけばいいのですが、いくつかハマりどころがありました。

template0を明示する

Houndに限ったことではなくPostgresqlの環境によりますが、template1がUTF8以外で作られている環境では、 rake db:createに失敗することがありました。 config/database.ymltemplate: template0を明示してあげる必要があります。

Stripeのアカウントを用意する

PrivateリポジトリをHoundに登録する際に、決済サービスのStripeAPIを叩くため、API Keyが必要になります。

f:id:dex1t:20150618212945p:plain

アカウントを用意した後で、Stripeのtest環境用API Keyを、Houndの.envにセットしましょう。

StripeでPrivateプランを作る

ここが最大のハマりどころですが、HoundにPrivateリポジトリを登録する際には、 Stirpe上でPrivateプラン (本番だとこれが月額$12) を購入することになります。

手元の環境でも同様に、プランをStripe上に用意してあげる必要があります。

f:id:dex1t:20150618210534p:plain

Stripeのダッシュボードからプランが作成できるので、ID: privateという名前で適当に作成しましょう。

ここまでをクリアすれば、あとは普通のRailsアプリの感覚で手元で動かすことができると思われます。

自前のカスタムCopを使う

Hound CIは、Rubyのコードを静的解析するためにRubocopを使っています。 そのため、Rubocop用のrubocop-rspecや、自前のカスタムCopを、Gemfileに追加するだけでHoundでも利用できます。

手元のRubocopとHound CIのコーディング規約を揃えたい

Hound CIがある場合でも、手元でRubocopを回したい場合もあります。 ただ、両者のコーディング規約を揃えておかないと、いまいちです。

これはHoundのドキュメントにもありますが、 各リポジトリに、.hound.ymlを置いて、

ruby:
    config_file: .rubocop.yml

のようにコーディング規約にどのファイルを使うのかを明示してあげられます。

これによって、Houndに手元のrubocopの規約を流し込むことができます。

おわり

f:id:dex1t:20150618211901p:plain

これで弊社のBot、ジャーニーくんがコメントをくれるようになりました!