読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

Subversion と Hudson の連携−その2 Subversion リポジトリのコミットをトリガにソースをビルドする

Subversion Hudson

Hudson の勉強をここに沿ってやっていて、ビルドトリガというものに出くわした。


ビルドトリガとは、Hudson でビルドするためのトリガで、いくつかやり方がある。

  • ある時間になったらビルドを始める(ナイトリービルドみたいに)
  • 一定時間周期でリポジトリをポーリングで監視し、リポジトリに変更があった場合にビルドを始める
  • リポジトリへのコミットをトリガにしてビルドを始める

やっぱりリポジトリへのコミットをトリガにしてビルドしたいよね、ということで試してみる。


wget を使って Hudson にトリガを入れればいいらしいけど、Windowswget はないとのこと。
困ったときのぐーぐるせんせいにお問い合わせすると、ここWindows で使える wget があったので早速 DL。
ありがたやありがたや。

環境および前提条件

  • Windows XP Pro SP2 + TracLightning 2.0.4 (Trac + SVN + Hudson)
  • ここから wget をダウンロード、展開しパスを通す
  • Trac 側プロジェクトは 「SampleProject」 とする(別プロジェクトの場合は SampleProject を読み替える)
  • Hudson 側は前回作成した「UnitTest」を使用する

設定手順

あとは @IT の記事どおりに設定してあげればよい。
2. Hudson の 「ビルド実行」リンクのアドレスを取得する(ここでは「http://localhost/hudson/job/UnitTest/build?delay=0sec」)

1. post-commite を探す。TracLightning ベースで進めると、「C:\TracLight\projects\svn\SampleProject\hooks」 に post-commit.bat がある
3. post-commit.bat の 一番最後に 「wget http://localhost:8010/hudson/job/UnitTest/build?delay=0sec」 を一行追加する(接続先ポートが 8010 に注意

post-commit.bat

SET TRAC_LIGHT_HOME=C:\TracLight

if not DEFINED TL_PROJECT_HOME set TL_PROJECT_HOME=%TRAC_LIGHT_HOME%\projects

-----------------------------
Call the TRAC post-commit hook

SET REPOS="%1"
SET REV=%2

FOR /F "usebackq delims==" %%i IN (`%TRAC_LIGHT_HOME%\python\python.exe -c "import sys,re;r=re.split('\\\\',sys.argv[1]);print r[len(r)-1]" %REPOS%`) DO SET PROJECT=%%i

bash.exe %TRAC_LIGHT_HOME%/bin/post-commit.sh "%1" %2 "%TL_PROJECT_HOME%" "%PROJECT%"

wget http://localhost:8010/hudson/job/UnitTest/build?delay=0sec

まとめ

これで SampleProject にファイルをコミットすると、Hudson 側でビルドが始まる。
TracLightning を使用していれば、ビルド結果がタイムラインに現れるらしいのだけど、現状それが表示できず。。。