Ruby Advent Calendar 2013 4日目
この記事はRuby Advent Calendar 2013の四日目の記事です。
昨日はznzさんの Ruby 2.1.0-preview2で追加されたException#causeの紹介 です。
Ruby2.1の記事ですので、まだ確認されていない方はお早めに!
本日の概要
1人で開発をしているとさびしくなって、誰かと会話をしたいと思うことはないでしょうか。
そこでWebSocketを使ってJenkinsさんと会話をする方法を記載したいと思います
準備
Jenkinsに Jenkins Websocket Notifier をインストールしてください。
公式プラグインとなっていますので 画面上から簡単にインストールできます。
Jenkins Websocket Notifier は、みずぴーさんが作られた Plugin となります。
Jenkinsのビルド結果をリアルタイム通知するプラグイン『Jenkins Websocket Notifier』を作りました
インストール
RubyでWebSocketを使うために gem をインストールします。
WebSocket用の gem はいくつかありますが、個人的に一番使いやすかったのは websocket-client-simple でしたので、そちらで会話をすすめていきます。
gem install websocket-client-simple
websocket-client-simple は、橋本 翔さんが作られた gem となります。
websocket-client-simple 作った
実装
ほとんど全てを websocket-client-simple が良しなにしてくれるため、何も実装せずともJenkinsからのPush通信をうけとることができます。
require 'rubygems'
require 'websocket-client-simple'
ws = WebSocket::Client::Simple.connect 'http://localhost:8081/jenkins'
ws.on :message do |msg|
puts msg.data
end
loop do
ws.send STDIN.gets.strip
end
Jenkinsからの通信の結果は下記となります。
{"number":39,"project":"Test","result":"FAILURE"}
number が ビルド履歴の回数
project が プロジェクト名
result が 成功か失敗か
ws.on :message do |msg|
puts msg.data
end
message にてJenkins側からのPush通信を受け取りますので、こちらでデータを加工していただければ、buildが失敗した場合のみPush通信をうけるなど制御を行うこともできます。
最後に
巨人の肩に乗ることによって本当に簡単にWebSocketにてJenkinsと通信することができました。
WebsocketのClient側は色々と使い道があると思います。
Jenkinsさんからの結果をいち早く知りたいでも良いですし
websocket-railsで簡単なPush通知を実装する にも書かれていますが Railsからリアルタイムに情報をうけとっても良いですし
使い方はさまざまだと思います。
興味をもってくださった方は、ぜひぜひ試していただければと思います。
本当に最後に
この記事は Ruby Advent Calendar 2013 への投稿であり、 Jenkins Advent Calendar 2013 ではありません!(ぁ