2009年5月15日金曜日

hudsonに乗り換えました。

継続的統合にmavenとの相性からcontinuumが良いと思っていたのですが、操作感の重さと日本語環境の貧弱さが
如何ともしがたくて、hudsonを試してみました。で、ソッコーで乗り換えました。

  1. 日本語環境で困る事なし。
  2. アプリ環境設定が楽チン。
  3. Ajaxで処理中のログの閲覧が快適。
既にjetty + continuumの環境があるのでwebapp-plusディレクトリにhudson.warを置いてjetty再起動するだけで
簡単に使えました。

以前はjettyのプロセスのためにjettyユーザーを作成していたのですが、continuum起動時に例外が発生するため
やむなく、root権限で起動させていたのですが、hudsonでは問題なくjettyユーザーで起動できたので、権限問題も
クリア出来ました。

定期的なビルドと共にリポジトリに更新があった場合にもビルドしてほしい訳ですが、hudsonでは提供されるREST API
を利用するようです。

apacheのリポジトリの構成をまねっこしている自分のリポジトリでは post-commit スクリプトで以下のように
ディレクトリ構成からプロジェクト名、ブランチを取得してREST APIにアクセスしています。

最後の「delay=30sec」はcommitするサイズが大きいとdelayが十分でなくなって2重でビルドが起動してしまうことが
あったので適当に30秒としています。

selinuxを適応している場合は chcon -t httpd_sys_script_exec_t post-commit でコンテキストの変更を忘れずに。


for ELEMENT in $(svnlook dirs-changed -r $REV /foo/var/repos); do
if [ "$PROJECT" = "" ]; then
PROJECT=$(echo $ELEMENT | cut -d/ -f1)
if [ $PROJECT = incubator ]; then
PROJECT=$(echo $ELEMENT | cut -d/ -f2)
fi
fi
if [ ! -z $(echo $ELEMENT | grep "branches") ]; then
BRANCH=$(echo $ELEMENT | cut -d/ -f3)
break;
fi
done

if [ "$PROJECT" = incubator ]; then
exit
fi
if [ "$BRANCH" != "" ]; then
TARGET="$PROJECT-$BRANCH"
else
TARGET="$PROJECT"
fi

wget -O /dev/null http://domain.jp/hudson/job/$TARGET/build?delay=30sec

0 件のコメント: