griffonでちょっとこんなの作ってみた

恥ずかしげもなくHudsonブラウザ(仮)とか言ってみる。:-)


つい最近,HudsonのリモートアクセスAPIの存在を知った*1ので,どこまでAPIが提供されているのか見たいのもあって,(↑)あんなの作ってみた。
#コードはまだお見せできる状態じゃないので,しばらく非公開。:-P


スクリーンショットだけだとそれっぽく見えるが,ものすごくやっつけなコードなのだよ。でもロクにSwing知らないのに,griffonのサンプル(GrailsSnoop)をベースにちょこちょこやるだけで簡単にできるんだから,groovy+griffonの手軽さは異常と言わざるを得まい。
#あと,XMLの処理もちょー簡単だった。XmlSlurperバンザイ*2


あとHudsonのリモートアクセスAPIについては,テストレポートにもAPIがあったことが一番の収穫だった。つーか,それさえ拾えれば自分的にはもう満足なんだけどね。
参考までに,APIの例を紹介("http://deadlock.netbeans.org/hudson/"は,お好きなHudson URLに書き換えてちょ)。

-ジョブ一覧
 http://deadlock.netbeans.org/hudson/api/xml
 http://deadlock.netbeans.org/hudson/api/schema

-特定のジョブ情報(analytics-server)
 http://deadlock.netbeans.org/hudson/job/analytics-server/api/xml
 http://deadlock.netbeans.org/hudson/job/analytics-server/api/schema

-特定のビルド情報(analytics-server/lastBuild)
 http://deadlock.netbeans.org/hudson/job/analytics-server/lastBuild/api/xml
 http://deadlock.netbeans.org/hudson/job/analytics-server/lastBuild/api/schema

-特定のビルドのテスト結果(analytics-server/lastBuild/testReport)
 http://deadlock.netbeans.org/hudson/job/analytics-server/lastBuild/testReport/api/xml
 http://deadlock.netbeans.org/hudson/job/analytics-server/lastBuild/testReport/api/schema

ちゃんと調べてないけど,ジョブの種類(フリースタイル,Maven,etc)によってスキーマが異なるようなので,真面目に作ろう思ったら,いろいろ考慮が要りそう。さらにUIのコスメティックとか考え始めると,やること多くて具合悪くなる。


だがしかし,意外と簡単に欲する情報が取得できる事がわかったのは素直にうれしい。あとは自分の気分次第なので,のんびりやるとしよう。
#あ,ちなみにgriffonはフリで,ホントウに作りたいのはIntelliJプラグインだよ。;-)

*1:id:kkawaさん,id:ssogabeさん,ありがとうございます

*2:ただ,日本語含んでいるXMLのデコードがあやしげなんだよね

HudsonのリモートアクセスAPIを調べてみた

こうゆうのは勢いが大事なので,その気になっているウチに下調べしといたよ。


書いた本人が読み方忘れるかも知れないので,ヒントを残す。;-)

  • ルートの hudson ってのは,hudsonのURL(HUDSON_URL)だと思ってくれ。
  • ジョブ一覧を取りたかったら,"$HUDSON_URL/api/xml" にアクセスだ。
    • hudson.primaryView.job.urlがjobのURL(JOB_URL)だよ。
  • JOB_URLからビルド(BUILD_URL)を探す方法は何通りかある。
    • "$JOB_URL/api/xml" で最新ビルドとか最新の安定ビルドとかがわかる。
    • "$JOB_URL/rssAll"や"$JOB_URL/rssFailed"でビルドの一覧が取れる
  • "$BUILD_URL/api/xml"からはチェンジセットが取れる(あんま関心ない)
  • "$BUILD_URL/testReport"があるかどうかは,アクセスしてみないと分からない。
  • "$BUILD_URL/testReport/api/xml" ですべてのテスト結果が取れる
    • "$BUILD_URL/testReport/../api/xml" でさらに掘り下げることはできるけど,最上位(testReport/api/xml)の結果を絞り込んでるだけなので,あんまり得する事は無い。

まーしかしだ。ちょっと以外は見なかった事にしたいね。:-)


あたしが欲しいネタは末端のにあるのは分かったんだけど,これってすべてのテスト結果を一斉公開してるんだよね。この出力処理するのってすごーく富豪的な気がするんだけど,どんなもんなのかねぇ。
...などと,まだなにも作ってもないのに余計な事ばかり考えてるなぁ。悪いクセだ。


ホントかどうかはわからないけど,勝手に思い込んでいる事を挙げるよ。

  • jobの種類がfreeStyleProjectなのかmavenModuleSetなのかは,jobを取得してみないと分からない。
    • たぶん,この2つの他にもjobの種類があるんだと思う(build matrixって無かったっけ?)。
  • buildにテストレポートがあるかどうかは /testReport にアクセスしてみないと分からない。
  • buildの出力はbuildの /consoleText から抜ける
  • 残念だけど,各テストメソッドの出力は無い。
  • api/xmlに '?xpath=...' を指定できるけど,特定の1要素の抜き出しに使う(出力内容の絞り込みには使えない)。
  • /testReport 以外のレポートにAPIがあるかどうかは知らない。
  • /testReport のAPIは古いHudsonには実装されていない。

何はともあれ,HudsonのURLさえ分かれば,ジョブ一覧→ジョブ特定→ビルド一覧→ビルド特定→テストレポートの有無確認→失敗したテストの詳細取得までたどり着ける(おまけで,ビルドのコンソール出力も)。


次はUIまわりか...。Swingは何も知らないに等しいからなぁ。先は長いや。:-)