Hudsonを動かしてみる.

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する必要があるのだが…

@2 years ago