HudsonBrowser作ってみた

つっても人柱バージョンだけどナ。Google Codeにソースも入れといた。ついでに,JSmoothで作ったEXEも置いておくから,Windowsな人はJRE入ってりゃ動くと思う。

えっと,Griffon 0.1bで作ったよ。SwingBuilderやGriffonそのものを知らなくてつまずく事もあったけど,基本すげー簡単だった。ありがとうGroovy&Hudson Remote API。:-)
ホント,Javaだったらこんなの組む気にならんよ。:-P


ちょっと解説とお悩みのお披露目。


立ち上げたらHudsonのURL聞いてくるから,適当なの入れてログイン(HudsonBrowserController)してね。
#あ,ごめんなさい。Hudsonのバージョンチェックとか認証とかやってないデス。


手頃なHudsonのURLとして,次の二つを利用さしてもらいました。

  • http://deadlock.netbeans.org/hudson/
    • NetBeansのプロジェクトかな。HudsonのRemote APIに載ってあったので参考にしてみた。たくさんあるけど,全部フリースタイルプロジェクト。
  • https://www.seasar.org/hudson/
    • Seasarプロジェクト。Mavenモジュールプロジェクトが多いけど,フリースタイルプロジェクトもある。Matrixプロジェクトもあってビビった。:-)

ログインするとこんなことする。

  • $HUDSON_URL/api/xml でジョブ(JobNode)一覧取得してメイン画面(HudsonJobsController)を表示。
  • $HUDSON_URL/$JOB/rssAll でビルド(BuildNode)一覧取得(rssFailedからでも良いと思う)


ビルド一覧からビルドを選んでダブルクリックすると,こんなことやる。

  • $HUDSON_URL/$JOB/testReport/api/xml にアクセスできれば新しいタブ(HudsonBuildController)を開く
  • ビルドの子どもの要素を取得する
    • フリースタイルプロジェクトだったら,テストクラス(TestClassNode)一覧を取得。
    • Mavenモジュールプロジェクトだったら,モジュール(MavenModuleNode)一覧を取得。

ビルドの子どもの取り出しは,どっちも $HUDSON_URL/$JOB/testReport/api/xml で取得する。フリースタイルプロジェクトの場合,パッケージ一覧をすっとばしてクラス一覧を組み立てたかったから,

$HUDSON_URL/$JOB/testReport/api/xml?depth=1

を指定してる。
欲を言えば「失敗したテスト」だけを抜き出したかったんだけど,"?exclude="の指定の仕方が分かんなかったッス。>川口さん


モジュールの子どもはテストクラスの一覧になるんで,ここでフリースタイルプロジェクトと合流する。


テストクラスはテストメソッド(TestMethodNode)を子どもに持ってる。そのテストメソッドを選択すると,右側のビューにスタックとレースやら標準エラー出力,標準出力を表示する。
テストが成功していると何も出ないので,楽しくもなんともない。


あとオマケでビルド画面のルートノードを選択すると,そのビルドのコンソール出力を表示するようにしてみた(結構,重い)。


あとやりたいことは,右側のビューにHyperLinkListenerくっ付けてスタックトレースからソースコードにジャンプとかさせたい。:-)
でも,そこまでくるとIntelliJプラグインにしたほうが,素のJEditorPane使うより便利なコンポーネントがあるんじゃないかなって妄想してるんで,Griffonではもうやんない。


今回のお試しで結構満足してしまったので,やる気ゲージが溜まるまでしばらくかかると思う。実際これの完成度上げようとしたら,やること盛りだくさんだしね。
願わくば,その間にHudson Build Monitorプラグインが,あたしの望みを叶えてくれるとうれしい。:-)