サーバ

Hudson on JBoss on Mac OSX – job の設定

Hudson on JBoss on Mac OSX – インストール – 侍ズム
Hudson on JBoss on Mac OSX – job の設定 – 侍ズム

Job とは Hudson のプロジェクト単位のことみたいです。
プロジェクト毎に Job を作っておき、どういったトリガでビルドが行われるかを事前に設定しておきます。
Job の作成は [トップ > New Job] から行えます。

1. Job の種類
New Job を選ぶと4種類のジョブが選択できます。Twitter4J は mavenize されたプロジェクトなので Build a maven2 project を選択します。

2. SCM
SCM(ソースコードマネージメント)では Subversion のリポジトリの設定を行います。
わかりやすいソースコードへのリンクがつくよう、fisheye の設定も行いました。

3. ビルドトリガ
何を契機にビルドが行われるかを設定します。
定期的に、SCMをポーリングして変更があったら、外部からの GET リクエストから、等の設定が行えます。
今回は "Trigger builds remotely" を設定しました。

ここで設定したトークンを含めた URL を Subversion の post-commit フックで叩いてあげれば良いようです。
Subversion のリポジトリの hooks ディレクトリに以下のようなスクリプトを置いておきました。

$ pwd 
/Users/yusukey/repos/hooks
$ cat post-commit
wget http://yusuke.homeip.net/hudson/job/Twitter4J/build?token={トークン}

4. ビルドさせてみる
本当はリポジトリへのチェックインを契機にビルドしてもらうべきですが、確認のために手動で上記の URL を叩いてみました。
すると、なんだか失敗しています。
コンソール出力を確認してみると、

Failed to create /var/root/.m2
See https://hudson.dev.java.net/cannot-create-.m2.html

とあります。
エラーメッセージが親切ですね、https://hudson.dev.java.net/cannot-create-.m2.html を見てみると、メッセージの通り .m2 ディレクトリが作成できなかった。作ってあげてねとあります。
JBoss は yusukey ユーザさんで起動しているのにどうして /var/root/.m2 に Maven のローカルリポジトリを作ろうとしたのでしょう・・。
[Hudson > System Information > http://yusuke.homeip.net/hudson/systemInfo] からシステムプロパティを確認して /var/root が含まれるプロパティを探してみました。
すると user.home が /var/root になっていました。なるほど、じゃぁ user.home を明示的に指定してあげれば良さそうですね。

#
# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Duser.home=/Users/yusukey -DHUDSON_HOME=/Users/yusukey/.hudson -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -XX:MaxTenuringThreshold=32 -XX:SurvivorRatio=8 -XX:NewSize=100m -XX:MaxNewSize=100m -Xms400m -Xmx400m -server -Djava.awt.headless=true -XX:PermSize=40m -XX:MaxPermSize=128m"

再度挑戦してみたら、今度はプラグインのダウンロードに失敗したとのこと。

[WARNING] repository metadata for: 'artifact org.apache.maven.plugins:maven-resources-plugin' could not be retrieved from repository: central due to an error: Specified destination directory cannot be created: /var/root/.m2/repository/org/apache/maven/plugins/maven-resources-plugin

あれれ?まだ /var/root/.m2 を見てるぞ・・。再度 [Hudson > System Information > http://yusuke.homeip.net/hudson/systemInfo] を見たら HOME 環境変数が /var/root になっていました。
run.conf に

export HOME=/Users/yusukey

と書き加えて3度目の正直。

今度はうまくビルドが走ったようです。

しかしまた別のエラー(FATAL: Bounds exceeds available space)が出ました。これは Mac OSX 上で発生する既知の問題で、現在対応中の様です。
hudson: Issue 3164 OS X builds on 1.285 always fail with a ProcessTreeKiller error

ちなみにこの問題は手元の作業用の MacBook Pro(Core 2 Duo)/Leopardでは発生しませんでした。Hudson を運用しようとしているサーバは iBook G4(G4)/Leopard です。

Hudson on JBoss on Mac OSX – インストール – 侍ズム