Hudsonでの分散ビルドについて

Hudsonはmaster/slave方式の分散ビルドができるのだけど、ちょっと面倒。
master側はいいとして、slave側の細かな設定ができないようだ。
例えば、masterをLinux、slaveをWindowsにしてJava Web Startで動かすことで試したんだけど、JDKの指定とかMavenの指定とかがslave側で出来ない。

Hudsonでの分散ビルド? - cactusman日誌

これは実はクラスタのサイズと大きな関係があります。僕がSunで使っているHudsonのインストレーションは、スレーブが20台以上あります。大きなクラスタになってくると、スレーブの環境を揃えておかないと管理しきれなくなります。ビルドされるプログラムの方も、環境が統一されていないと(例えばwgetが必ずインストールされている、Mavenはどこでも2.0.7とか)特定スレーブに依存する羽目になります。こうして、結果的にスレーブの環境が同じになってきてしまうわけです。なので、スレーブ毎の設定が少ないということは、この観点からは望ましいわけです。いっぽう、マスター1台にスレーブ2台、のような小型のデプロイメントや、特に初めてのスレーブを追加する場合には、違う設定ができるというのが便利になってくるわけです。


何が言いたいかというと、この手の部分を考える時には、両方の事を考えないといけないよ、と。


ユーザーの様子を見ているに、小規模なデプロイメントではJava Web Startが多く使われているようなので、このGUIにこのスレーブ上でのJDKだのMavenだののパスを設定する機能を付ける、というあたりが無難なスタートかと。


#あと、Hudsonの場合にはデータは全てマスターのVM上にあるので、スレーブが効率的にHTTPリクエストをサービスするのは大変難しいです。