Jenkinsのビルド結果をリアルタイム通知するプラグイン『Jenkins Websocket Notifier』を作りました

追記: 公式プラグインになりました。Websocket Plugin - Jenkins - Jenkins Wiki

「pollingが許されるのは小学生までだよねー キモーイ キャハハハハハハ」というわけでビルド結果をpush通知するJenkinsプラグインを書きました。

特徴

  • Jenkinsのビルド結果をWebsocketを使って通知します。
  • モダンなブラウザはWebsocketに対応しているので、Javascriptで簡単に通知を受け取れます。
  • Websocketはプラットフォームに依存しないプロトコルなので、Javascript以外でも通知を受け取れます。

インストール方法

  1. https://github.com/mzp/unageel/archives/master からwsnotifier.hpiをダウンロードする。
  2. wsnotifier.hpiをJenkins の管理 > プラグインの管理 > 高度な設定 > プラグインのアップロード からアップロードする。
  3. Jenkins の管理 > プラグインの管理からWebsocket Pluginをインストールする。
  4. Jenkinsを再起動する。

設定方法

Jenkins の管理 > システムの設定 > Websocket Notifier で Websocketサーバを起動するポート番号を指定します。

(プロジェクト名) > 設定 > ビルド後の処理 でWebsocket Notifierのチェックボックスをオンにします。


利用例 その1: Chromeエクステンション

Jenkins のビルド結果を通知する Chrome エクステンション作った - mallowlabsの備忘録 を改造して、Websocket Notifierに対応させました。 使い方・機能は変っていませんが、通知速度が格段にあがっています。
パッチはすでに本体に取り込まれているので、インストール方法等はリンク先を参照してください。

利用例 その2: iPad/iPhoneのXFD化

WebsocketはJavascriptで簡単に扱えるので、ビルド結果によって背景色を切り替えるWebページも簡単に作れます。これをiPad/iPhoneで表示すれば、iPad/iPhoneテスト結果を通知するXFD(eXtream Feedback Device)として利用できます。

<html>
  <body bgcolor="red" id="bg">
    <script>
      var elem = document.getElementById('bg');
      var ws = new WebSocket('ws://localhost:8081/jenkins');
      ws.onmessage = function(msg) {
          eval('var obj = ' + msg.data);
          if(obj.result == 'SUCCESS'){
              elem.bgColor = 'green';
          }else{
              elem.bgColor = 'red';
          }
      };
    </script>
  </body>
</html>

http://github.com/mzp/unageel/blob/master/xfd.html

利用例 その3:ダンボーのXFD化

上記の応用でビルド結果に応じてダンボーの目の色を変えることができます。
ダンボー本体はよつばとリボルテック リボルテックダンボーを、目の色の制御にはArduinoをはじめようキットを使っています。 目には大須で買ってきたフルカラーLEDを仕込んでいます。

技術的な話

  • ws://localhost:8081/jenkins に接続するとJSON形式でビルド結果が飛んできます。
  • ポート番号は設定によって変更可能です。
  • ビルド結果は{ "name" : "test", "result" : "success", "number" : 1 }のような形式です。

お礼