hudsonのリモートアクセスAPIでジョブ情報を取得したい
hudsonの情報はリモートアクセスAPI(http://wiki.hudson-ci.org/display/HUDSON/Remote+access+API)という仕組みで各種情報を取得できるようになっています。
プラグインなどの仕組みも用意されているのでやろうと思えば、もっといろいろなことができると思うのですが、単純にJOBの依存関係をビジュアルに確認できたらなぁ〜と思っていたので、このリモートアクセスAPI経由で情報を取得してjavascriptなどで加工しビジュアルにブラウザで表示できたらいいなと思いました。(プラグインで既にあったりしないだろうか。。。)
リモートアクセスAPIでは取得データの形式として、XML,JSON,Pythonをサポートしているということでした。JSONがjavascriptと親和性が高いだろうということでまずは試しということでJOB名の一覧を取得して、テーブル形式にならべるようなHTML(javascript)を書いてみました。
JSONPで扱うためのURL指定方法が良く分からなかったので、そこだけ手間取りましたが、データ取得できてしまえば簡単です。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>sample</title> <script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript"> jQuery(function($){ $.ajax({ dataType: 'jsonp', jsonp: 'jsonp', url: 'http://XX.XX.XX.XX:9999/hudson/view/all/api/json?', error: function(){ //データの読み込みに失敗 alert("JSONPの読み込みに失敗しました"); }, success: function(json){ var preJobName = ""; var tab = $( "<table></table>" ); $("#msg").append(tab); var tr = null; $.each(json.jobs, function(i,item){ var obj = $( "<TD>" + item.name + "</TD>" ); $(obj).css('width', 170); $(obj).css('height', 100); if( item.color == "aborted" ){ $(obj).css('background-color', "lightgray"); }else{ $(obj).css('background-color', item.color); } if( preJobName.substring(0,1) != item.name.substring(0,1) ){ tr = $( "<tr></tr>" ); tab.append( tr ); tr.append( obj ); } tr.append( obj ); preJobName = item.name; }); } }); }); </script> </head> <body> <H1>サンプルページ</H1> <div id="msg"></div> </body> </html>
下が実行してみたイメージです。
さて、なんとなりそうだと目途がついたところで、依存関係はhttp://XX.XX.XX.XX:9999/hudson/view/ビュー名/job/ジョブ名/configureのページで参照可能なのですが、これを取得するためのJSONインターフェースというかページが見つかりません。。。http://XX.XX.XX.XX:9999/hudson/view/ビュー名/job/ジョブ名/config.xmlというページが存在しXML形式であれば取得できることが分かりましたが、XMLではクロスドメイン問題があるためできれば避けたいと思っていたのですが、、、、他に方法がなさそうな気配です。。。