iPhone を Jenkins の XFD (eXtreme Feedback Device) にしてみた
Jenkins で XFD をやりたいとずっと思っていたのだけど、海外の友達に頼んで買ってもらった だの 回路をダンボーに組み込んだ だのハードル高いよ!と思ってなかなか実現できずにいた。
そんなとき Jenkinsのビルド結果をリアルタイム通知するプラグイン『Jenkins Websocket Notifier』を作りました - みずぴー日記 で iPad を XFD にしていたのに大変感銘を受け、会社の Jenkins のビルド状態を iPhone に常に表示してみた。
写真は iPhone 4 だけど、使い道がなくなった古い iPod touch が家に転がっていたりする人は、有効活用できると思う。
設定手順
まずは、 リンク先 の Jenkins Websocket Notifier プラグインをインストールする。
監視したいプロジェクトで通知を有効にするのを忘れずに。
次に、以下の HTML を Jenkins が動いているサーバの Apache に配置する。(localhost は適宜読み替えてください)
xfd.html
<html> <head> <title>Jenkins XFD</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> <link rel="apple-touch-icon" href="http://agentdero.cachefly.net/continuousblog/newlogo/headshot.png" /> <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"/> <script> $(function(){ function show(obj){ var elem = $('#bg'); if(obj.result == 'SUCCESS'){ elem.css('background-color', 'green'); }else if(obj.result == 'UNSTABLE'){ elem.css('background-color', 'yellow'); }else{ elem.css('background-color', 'red'); } } var project = window.location.search.substring(1) || 'test'; var ws = new WebSocket('ws://localhost:8081/jenkins'); ws.onmessage = function(msg) { eval('var obj = ' + msg.data); if(obj.project != project) return; show(obj); }; $.getJSON('http://localhost/jenkins/job/' + project + '/lastBuild/api/json', show); }); </script> </head> <body id="bg"></body> </html>
アクセスするときは
http://localhost/xfd.html?project-name
のように xfd.html に iPhone からアクセスし、ホーム画面に追加を選ぶ。
するとホーム画面に Jenkins のおっさんが追加されるのでタップすると、フルスクリーンで表示されるので XFD として使える。
ホーム画面から起動すると、ロック状態でも JavaScript が走り続けたりする。
ちなみに
最初の写真で使っている iPhone スタンドは ラウンドスタンド for iPhone ブラック というやつで、充電ケーブルを組み込めるし、iPhone を縦にも横にも置けるのでオススメ。