なきながらWindows7にbuildbotを入れてみる 1
■目的
buildbotをWindows7にインストールしてとりあえず、スタートアップのページくらいは表示する。

■buildbotとは
pythonで記述された自動ビルド~自動テストを行うシステムです。
b0232065_123478.png


BULDMASTERというサーバーが構成管理のレポジトリを監視して変更があったら各BUILD SLAVEにたいしてコマンドを実行するように要求します。

その結果をEMAILなり、Webサイトに表示します。

複数のサーバーが連動して動くのが良い感じです。
これにより、WindowXP,Win7,Mac,Unix....と異なるOSでビルドしてテストを行うということができます。
マルチプラットフォームで開発するさいに非常に強力な能力を発揮すると期待できます。



■事前準備
1. Python2.x のインストール
 今回はPython2.7をC:\Python27 にインストールしました。
 また、32bitプラットフォームを使用します。

2. pywin32 (Python for Windows extensions)のインストール
 Windows用の拡張機能をPythonで使用できるようになります。
 2012/09/18 時点では ビルド番号217が最新なのでそれを使用します。
b0232065_1134763.png


b0232065_1141223.png


b0232065_1143699.png

 インストールしたPythonのバージョンに一致するexeを使用します。
 セットアップを起動すると自動でC:\Python27へインストールされる。

3.Twisted
 Twisetedはイベント駆動型のネットワークエンジン。Pythonで書かれたのオープンソース。
 TCP、UDP、SSL/TLS、IP マルチキャスト、Unix ドメインソケットをサポートし、また、多数のプロトコル(HTTP、NNTP、IMAP、SSH、IRC、FTP など)をサポートしている。
b0232065_1175548.png


 Pythonのバージョンに適応するmsiをダウンロードしてインストールする。

4. easy_installのインストール
 easy_installという簡単にpythonのモジュールをインストールするスクリプト。
 
b0232065_1195568.png

 Pythonのバージョンに適応するexeをダウンロードしてインストールする。

5. zope.interface のインストール
Zope は、Pythonで書かれた、オープンソース&フリーのWebアプリケーション・サーバです.
おそらく、そいつを操作するインターフェイスをインストールする

c:\Python27\Scripts>easy_install zope.interface


以降の6,7はマスターサーバーとして動作する場合に必要

6, Jinja2
Jinjaは、プログラミング言語Python用のテンプレートエンジン

C:\python27\scripts\easy_install Jinja2


7, PyOpenSSL
PythonのOPENSSL


C:\python27\scripts\easy_install PyOpenSSL


■マスターサーバーのインストール
http://trac.buildbot.net/のMASTERよりzipをダウンロードする。
こんかいは buildbot-0.8.6p1.zip をダウンロードして、C:\buildbot\buildbot-0.8.6p1 に解凍したものとする。


cd C:\buildbot\buildbot-0.8.6p1
C:\python27\python setup.py install


■スレーブサーバのインストール
http://trac.buildbot.net/のSLAVEよりzipをダウンロードする。

今回はbuildbot-slave-0.8.6p1.zipをダウンロードして C:\buildbot\buildbot-slave-0.8.6p1 に解凍したものとする。


cd C:\buildbot\buildbot-slave-0.8.6p1
C:\python27\python setup.py install


buildbotのマスターを作成する
下記のコマンドを実行

c:\Python27\Scripts\buildbot create-master C:\buildbot\master_test


C:\buildbot\master_test にいくつかのフォルダとファイルが作成される。
master.cfg.sample というファイル名をmaster.cfgに変更する。

master.cfgはPythonのファイルになっており、その記述をcheckconfigサブコマンドで確認できる

cd C:\buildbot\master_test
c:\Python27\Scripts\buildbot checkconfig

この結果で「Config file is good!」とでればコンフィグファイルは正常である。
なんらかのエラーがでたら、それにあわせて修正を行う


■Twisted 12.2.0 使用時のエラー
checkconfig サブコマンド、startサブコマンドを実行した場合に下記のようなエラーがでる。

2012-09-18 23:44:51+0900 [-] Unhandled Error
Traceback (most recent call last):
File "c:\Python27\lib\site-packages\twisted\internet\defer.py", line 551, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "c:\Python27\lib\site-packages\twisted\internet\defer.py", line 916, in gotResult
_deferGenerator(g, deferred)
File "c:\Python27\lib\site-packages\twisted\internet\defer.py", line 891, in _deferGenerator
result = g.next()
File "c:\Python27\lib\site-packages\buildbot-0.8.6p1-py2.7.egg\buildbot\master.py", line 166, in startService
self.configFileName)
--- ---
File "c:\Python27\lib\site-packages\buildbot-0.8.6p1-py2.7.egg\buildbot\config.py", line 144, in loadConfig
exec f in localDict
File "C:\buildbot\master_test\master.cfg", line 86, in
from buildbot.status import html
File "c:\Python27\lib\site-packages\buildbot-0.8.6p1-py2.7.egg\buildbot\status\html.py", line 20, in
from buildbot.status.web.baseweb import WebStatus
File "c:\Python27\lib\site-packages\buildbot-0.8.6p1-py2.7.egg\buildbot\status\web\baseweb.py", line 35, in
from buildbot.status.web.changes import ChangesResource
File "c:\Python27\lib\site-packages\buildbot-0.8.6p1-py2.7.egg\buildbot\status\web\changes.py", line 19, in
from twisted.web.error import NoResource
exceptions.ImportError: cannot import name NoResource


これはtwistd 12.2.0のerror.pyがNoResourceをサポートしていないために、下記のコードでエラーが発生する

from twisted.web.error import NoResource


これを次のように置き換える。

#from twisted.web.error import NoResource
try:
from twisted.web.error import NoResource
except ImportError:
from twisted.web.error import Error as NoResource


おそらく次のファイルを修正しなければならない。
c:\Python27\lib\site-packages\buildbot-0.8.6p1-py2.7.egg\buildbot\status\web\changes.py
c:\Python27\lib\site-packages\buildbot-0.8.6p1-py2.7.egg\buildbot\status\web\logs.py
c:\Python27\lib\site-packages\buildbot-0.8.6p1-py2.7.egg\buildbot\status\web\slaves.py

buildbotのマスターを起動
下記のコマンドで起動する。

cd C:\buildbot\master_test
c:\Python27\Scripts\buildbot start


エラーが出た場合はtwistd.log になんらかのメッセージがでるだろう。

スレーブサーバーの作成
下記のコマンドを実行する

c:\Python27\Scripts\buildslave create-slave C:\buildbot\slave_test localhost:9989 slave_test pass

create-slaveのサブコマンドのパラメータは次のとおりとなる。
build-slave create-slave

:これはスレーブサーバ用のファイルを作成するディレクトリを指定する。
:マスターサーバーへのホストとポートを記述する
:マスターサーバに接続する際の名前
:マスターサーバに接続する際のログイン名


スレーブサーバの実行
スレーブサーバのbasedirに移動したあとに buildslaveを実行する。

cd c:\buildbot\slave_test
c:\python27\Scripts\buildslave start

エラーが出た場合はtwistd.log になんらかのメッセージがでるだろう。


■動作確認
すべてが旨くいった場合は「localhost:8010」にアクセスすると次のようなページが開く。

b0232065_1465316.png



■参考ページ
BuildBot メモ via 幕の内
Buildbot on Windows - Installation Instructions.
Buildbot v0.8.6p1 documentation First Run
Twisted 12.2.0 does not support 'NoResource'. Use Error instead.
■感想
ぶっちゃけ、まだ先が流そうです。
疲れたよパトラッシュなんだかとってもねむいんだ。
b0232065_1515574.jpg

[PR]
by mima_ita | 2012-09-19 01:53 | buildbot
<< windows でポートを占有... DevelopersSummi... >>



実験ですお
検索
カテゴリ
最新の記事
.NET4.5におけるasy..
at 2014-07-02 00:46
.NETでTwitterを検..
at 2014-06-29 00:49
Redmineのプラグインで..
at 2014-06-28 03:29
IO.popenのwrite..
at 2014-06-28 03:25
RedmineのWikiでU..
at 2014-06-28 03:16
以前の記事
最新のトラックバック
その他のジャンル
ブログパーツ