LoginSignup
16
17

More than 5 years have passed since last update.

websocket-client-simple でPush通信を使ってJenkinsさんと会話

Posted at

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通信をうけとることができます。

client.rb
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 ではありません!(ぁ

16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17