Buildbot SVN連携とかメール通知設定

SVN を監視させる

SVNにコミットしたら、Buildbotに通知して、テストとかしてもらいます。
$SVN_REPOS/hooks の下に、post-commit.tmpl があるので、これをpost-commitにリネーム。
とりあえずローカルリポジトリなので、自分のアカウントが実行できればOK?
でも、念のためどのユーザでも実行可能にしておく。

$ cp post-commit.tmpl post-commit
$ chmod 755 post-commit

Buildbot に通知するためのスクリプトは、buildbotのディストリビューションのcontribディレクトリにあります。
svn_buildbot.py がそれ。
hooks ディレクトリにコピーしときます。
そして、post-commit の中からsvn_buildbot.py を実行するように修正。

REPOS="$1"
REV="$2"

python $REPOS/hooks/svn_buildbot.py --repository "$REPOS" --revision "$REV" --bb server localhost --bbport 9989

引数はスレーブを設定したときに確認しといたやつ。

さらに、master.cfg でスケジューラとソースを設定

from buildbot.changes.pb import PBChangeSource
c['sources'].append(PBChangeSource())

c['schedulers'].append(Scheduler("all", branch=None, 
                                 builderNames=["bankaccount"],
                                 treeStableTimer=10))

ソースの設定は、コメントをはずすだけでいいはず。
スケジューラは、結構適当。
名前("all")は任意。
branchはよくわからんが、Noneでとりあえずいい。
builderNamesには、すでに設定済みのビルダーの名前を設定。
treeStableTimer はビルドする間隔。
すぐ結果をみたかったので、10秒にしてみた。
通常は5分くらいでいいのじゃないだろうか。

設定を書き換えたら、デーモンに設定を再読みこみさせます。

buildbot sighup hello/buildbot

ここまでできたら、ソースを修正して、SVNでコミット。
すると、buildbot がソースを取り出し、テストしてくれます。

メールで通知してもらう。

デフォルト設定では、Webインターフェイスで結果がみれるようになっているが、
メールで通知させることも可能。

from buildbot.status import mail
c['status'].append(mail.MailNotifier(
        fromaddr="buildbot@localhost",
        extraRecipients=["buildbot@localhost"],
        sendToInterestedUsers=False))

コメントをはずせばOK :-)
extraRecipients は適宜修正のこと。
ただし、localhostSMTPが動いてない人は、
relayhostキーワード引数にて、設定すべし。

デフォルトではこんなメッセージがくる。

The Buildbot has finished a build of bankaccount.
Full details are available at:
 http://localhost:8010/bankaccount/builds/62

Buildbot URL: http://localhost:8010/

Build Reason: 
Build Source Stamp: HEAD
Blamelist: aodag

Build succeeded!

sincerely,
 -The Buildbot

うーん、日本語にしたいねぇ。