https://hudson.dev.java.net/ に行って, 最新版をダウンロードする. MacOSXならば, ダウンロードした hudson.war をダブル・クリックするだけ. http://localhost:8080/ をブラウズすると, すでにHudsonは立ち上がっている.
「Hudsonの管理」メニューから「プラグインの管理」に行って, 例えばGrails, Groovy, Mercurialの各プラグインをインストールしてみる.
「Hudsonの管理」メニューから「システムの設定」に行って, Grails Builderに「追加」して, 適当な名前 (grails-1.1.1) と GRAILS_HOME 環境変数と同じ値を設定する. で, 保存. 「Hudsonの管理」メニューから「設定の再読み込み」をした方がいいみたい.
ダッシュボードに戻り, 適当に名前を付けてジョブをひとつ作る. ソースコード管理システムはMercurialなので, そのプロジェクトのローカルなパスをRepository URLに指定する.
「ビルド手順の追加」して, Build with Grails する. Grails Iinstallation はさっき Grails BUilder で指定したやつ (grails-1.1.1) を, Targetsには "test-app --non-interactive" とか書いてみる.
「ビルド実行」すると...
Compilation error: srcdir "/Users/masaki/.hudson/jobs/AutobaseExample/workspace/src/groovy" does not exist!
とか言ってfailしているよ!
buildに先だって, hgのリポジトリからcloneでソースコードを取り出しているのだが, その時に空のディレクトリは取り出されないのが原因のようだ...
これはmercurialがそういうものだから仕方ない. で, 次のようなgantスクリプトを作って, <basedir>/scriptsに置き, 手で % grails unemptyDirectories することにする. grailsの方を弄ってもいいのだったら, <grails>/scriptsに置いて, scripts/_GrailsCreateProject.groovyのcreateAppターゲットの最後のeventの前に呼ぶようにしてもいいかも知れない.
% cat scripts/unemptyDirectories.groovy
target ('default': "Makes a hidden file ('...') under the empty directories for marcurial+hudson") {
new File("${basedir}").eachDirRecurse {
if (it.list().length == 0) ant.touch file:"${it}/..."
}}
もっとも例えばNetBeansからaddすると'.'ファイルは無視されてしまうから, hgで直接addする必要があるのだが...
というわけで, 今の自分の環境とは合わないけど, Hudson自身はよさそう.