Trac Lighting付属のHudsonをCI以外の目的で使ってみる - almost nearly dead

本来のHudsonの使い方とは異なりますが、実行結果の確認とbatファイルの管理がHudsonで集中管理できるのは運用面での大きなメリットになります。

簡単に言うと「やらなきゃハドソン」って感じですw

あー,その気持ちよくわかります。あたしもPostgreSQLのバックアップをHudsonにやらせてます。バックアップファイルをアーティファクトに指定しておくと,なにかと便利だったりしますよ。


ここら辺のプラグインなんか,ビルド以外にも使えますね。

J2SE5.0_HOTSPOT_MEMO

ここ数年ほどJVMのチューニングとは無縁な生活を送ってきたのだけれど,ちょっと気になるこの一文。

Default garbage collectorの変更
サーバクラスのマシン、且つサーバVMを実行している場合、

1.5.0以降 1.4.2まで
-XX:+UseParallelGCがデフォルト -XX:+UseSerialGCがデフォルト

となった。上記 switchの明示的な指定で変更可能。

Default garbage collectorの変更

なんですと? JDK1.5.0からってパラレルコレクタがデフォルトなんすか!?さらに読み進めると「-XX:+UseAdaptiveSizePolicyがデフォで有効になる」って書いてるし。1.4.2時代は,このオプションが役に立った思い出ないんだけどな。今は違うんかね。
#パラレルコレクタがデフォになったってのは,ここでも見つけたからホントウなんだろう。
#→Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle


あたしの記憶が正しければ,パラレルGCんときは-XX:TargetSurvivorRatioが言う事きいてくんなかったと思ったけどなぁ。ちょっとヤなこと見つけちゃったかも。ん?でも強制的にシリアルGC指定しとけばいいんか??ヒマがあったら試してみたいけど,手間がかかるの分かってるから,多分やんない。
求む,詳細情報っ!! :-)


そんなに何を気にしているかというと,たとえばJDK1.4.2からJDK1.5.0以降にマイグレーションしたとしよう。JDK1.4.2用にチューニングしたJVMオプションをそのまま使ってもJDK1.5.0以降では有効に働かないものがありそうだよって事ス。何でか言うと,デフォルトコレクタが変更になったから。
でも,よくよく考えてみれば,JDK1.5もEOL迎えてんのに,こんなこと見つけたって騒ぐほどのもんでもないか...。

Remote APIが返すURLにHUDSON URLが適用されてないように思える

というのを原因突き詰めてバグレポしようと思ったのですが,途中で力尽きました。


えーとですね,Hudson v1.282,FreeStyleProjectの話です。winstoneでもTomcatでも良いんですが,自分のPC上にHudson立ち上げて,トップページのRemote APIを叩きます。たとえば,http://localhost:8080/api/xmlとか。


すると,戻り値の/job/url要素には,こんな値が返ってきます。

<url>http://localhost:8080/job/sampleJob/</url>
            ~~~~~~~~~~~~~~

ちなみに,このホスト名部分,http://127.0.0.1:8080/api/xmlとかhttp://masanobuimai-mac:8080/api/xmlとかすると,そのホスト名がそのまま/job/url要素に含まれて返ってきました。


つまり,Hudsonの設定画面でHUDSON URLを設定してもRemote APIのこの部分には適用されないようです。
RSSのURL部分には,この値が反映されています。


一応,この設定値がHudson.getRootUrl()で取れる事。Remote APIHudson.getApi()経由のApi.doXml()あたりまで追って挫折しました。ハイ,単に根性無しなだけデス。orz


なぜ,そんなことに気づいたかというと,Trac Lightningが mod_proxy使って Apache -> winstone(Hudson)連携をしていて,ここでRemote API叩いたら先のような現象に出くわしたという次第です。

Remote APIのxpath=, exclude=引数の使い方が分かった

ケガの功名というかなんちゅうか,Api.doXml()のソース読んだおかげで,xpath=とexclude=の使い方がわかったよ。

ポイントは,こんなもんかね。

  • XPath式には,"/hudson/..."みたいにルート要素も指定する。
  • exclude=は複数指定できる。
  • exclude=を指定した場合,xpath=も指定しないとエラーになる(仕様というかバグっぽい?)

XPath式はぜんぜん詳しくないからアレだけど,これって減算式でフィルタかけてくみたいね。たとえば「/hudson/job/color要素の値が'blue'だけの/hudson/jobの一覧」みたいな指定って出来ないのかな?...なんとなく出来なさそう。
あと,xpath=で指定するXPath式は「ひとつの特定ノード以下を取得」って理解してる。


ps.
ちょっとだけXPath式が便利に思えた。でも覚えるのメンドクサイ。:-(