Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

hayabusa333
Rubyist、Elixir好き
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした