複数のビルドサーバを一つのUIで確認できるStoplight

今週のDevOps Weekly(JUCの時に@agentderoに教えてもらった!*1 )で紹介されてたブログの中で紹介されてたツール。

複数のJenkinsサーバが乱立してる状態でビルドステータスを確認したりするUI書こうかな〜なんて思ってたら、これがまさにそれだった。しかもちょっと良さ気。余裕あったら明日会社のサーバに突っ込んでみようかな。

見た目はこんな感じ。
f:id:cynipe:20120819235204p:plain

使い方

まずリポジトリをチェックアウトして、bundleする。

$ git clone https://github.com/customink/stoplight.git
$ cd stoplight && bundle

とりあえずUIが見たいのでJenkinsのJenkinsとTravisCIを設定してみる。

config/server.yml

-
  type: 'jenkins'
  url: http://ci.jenkins-ci.org
  culprits: true

-
  type: 'travis'
  url: http://travis-ci.org
  owner_name: cynipe
  culprits: true

で、起動。

$ rackup ./config.ru

http://localhost:9292にアクセス。っと、なんかRackのCommonLoggerでエラーが出る。

[2012-08-19 23:33:33] ERROR NoMethodError: undefined method `write' for #<Logger:0x007fd6a58a1848>

RackのCommonLogger的にLoggerがwriteメソッド持ってないのが問題のようなのでサクッと以下のように修正。

config/boot.rb

 require 'logger'
-$logger = Logger.new('log/application.log')
+class MyLogger < Logger
+  alias write <<
+end
+$logger = MyLogger.new('log/application.log')
 use Rack::CommonLogger, $logger

でもってもいちどhttp://localhost:9292/index.htmlにアクセスすればOK。

簡単だし、他のビルドサーバとかでもProviderクラスを作って簡単に色々出来そうなんでいいですね!

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins

Jenkins

*1:Twitterのjenkinsciの中の人