複数の Jenkins と Travis のビルドの失敗が最速で分かる Stoplight を Heroku にデプロイ
複数のビルドサーバを一つのUIで確認できるStoplight - cynipeと読む を見て「これだっ!」と、この前まで隣だった人が叫んでいたので Heroku にデプロイしてみました。
iPad で表示したままにしておいて、チームのメンバが見えるところにおいておくと XFD っぽくていい感じです。
前提
以下が準備済みである必要があります。
- Git がインストールされている
- Heroku にアカウントをもっている
- Heroku コマンドがインストールされている
- Heroku のアカウントに公開鍵が登録されている
手順
1. stoplight を clone する
$ git clone git://github.com/customink/stoplight.git $ cd stoplight
2. ログ出力パスの変更
Heroku は tmp/ ディレクトリ以外のファイル書き込みを禁止しているのですが、ログ出力で log/ ディレクトリに書き込みをしようとしているのでこのままでは実行時にエラーを吐いてしまします。
$ git grep application.log config/boot.rb:$logger = ::Logger.new('log/application.log') lib/stoplight/providers/provider.rb: $logger = Logger.new('log/application.log')
そこでそれぞれのログ出力パスを tmp/ ディレクトリ以下に変更します。
$ git diff diff --git a/config/boot.rb b/config/boot.rb index 036429e..2db6b98 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -16,5 +16,5 @@ require 'application' require 'logger' class ::Logger; alias_method :write, :<<; end -$logger = ::Logger.new('log/application.log') +$logger = ::Logger.new('tmp/application.log') use Rack::CommonLogger, $logger diff --git a/lib/stoplight/providers/provider.rb b/lib/stoplight/providers/provider.rb index 9bcadd9..77b7f44 100644 --- a/lib/stoplight/providers/provider.rb +++ b/lib/stoplight/providers/provider.rb @@ -7,7 +7,7 @@ require 'uri' unless $logger require 'logger' - $logger = Logger.new('log/application.log') + $logger = Logger.new('tmp/application.log') end # Provider is an abstract class that all providers inherit from. It requires that a specified format be returned. This way, stoplight
変更を commit しておきます。
$ git commit -am "change log file path"
3. 設定
設定は servers.yml に記載します。
example ファイルがあるので、これをコピーして編集します。
$ cp config/servers.yml.example config/servers.yml
以下のような内容を追記します。編集内容は 本家 README を参考にしましょう。
- type: 'jenkins' url: JenkinsのURL - type: 'travis' url: http://travis-ci.org owner_name: ユーザ名
config/servers.yml は .gitignore で無視されるので、無視されないようにします.
$ git diff diff --git a/.gitignore b/.gitignore index e9461a4..1496818 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ .bundle .rvmrc .sass-cache -config/servers.yml log/*.log tmp vendor/ruby
設定を commit します。
$ git add . $ git commit -a -m "settings"
4. Procfile を消す
Procfile の内容が実行されますが Heroku では失敗します。
運用環境では必要無いので消してしまいましょう。
$ rm Procfile $ git commit -a -m "remove Procfile"
5. デプロイ
いよいよデプロイします。heroku create 時に URL が表示されるのでメモしておきましょう。
(忘れた場合でも Heroku にログインすれば確認できます)
$ heroku create Creating stark-badlands-1640... done, stack is cedar http://stark-badlands-1640.herokuapp.com/ | git@heroku.com:stark-badlands-1640.git Git remote heroku added $ git push heroku master
6. 確認する
デプロイ時に表示された URL に index.html をつけてアクセスします。
今回の場合なら http://stark-badlands-1640.herokuapp.com/index.html となります。
まとめ
実際は試行錯誤しましたが、まとめてみると簡単にデプロイできるようになりました。
ビルドサーバが VPS などグローバルにアクセスできるところにあるのであれば、Heroku へのデプロイを検討してみてもいいかもしれません。