BuildBot是一个自动构建工具。每当代码有改变,服务器要求不同平台上的客户端立即进行代码构建和测试,收集并报告不同平台的构建和测试结果。BuildBot用python写的,该python程序只依赖python环境和Twisted(一个python网络框架),可以在很多平台运行。下面详细介绍buildbot的安装和配置步骤。
首先介绍下如何安装:
1. install Twisted
Twisted 依赖 zope.interface and Python
wget -c
python setup.py install --prefix=$HOME
install zope.interface
wet -c
python setup.py build
python setup.py install --prefix=$HOME
2。 buildbot 源码
buildbot依赖Twisted和Python
SF打不开,不过可以到python网站下载
wget -c
python setup.py build
python setup.py install --home=~
That will populate ~/lib/python and create ~/bin/buildbot. Make sure this lib directory is on your PYTHONPATH.
把新模块的路径加到python系统路径下。
export PYTHONPATH=$HOME/lib/python:$HOME/lib/python2.4/site-package:$PYTHONPATH
如果有root权限,你也把上面的程序安装在系统目录下,直接python setup.py install 不指定安装目录。
3. check buildbot is ready
$ buildbot --version
Buildbot version: 0.7.7
Twisted version: 8.1.0
这里开始介绍buildbot服务器和客户端的配置。
1 setup buildbot master (server)
mkdir ~/buildbot_master
buildbot create-master buildbot_master
配置服务器端:
命令执行后会在buildbot_master目录下生成一个简单的buildbot服务器配置文件示例master.cfg.sample
我们可以参考这个来配置buildbot服务器,我们简单来分析这个文件。
c = BuildmasterConfig = {}
所有的配置数据都保存在一个python字典数据结构中。
from buildbot.buildslave import BuildSlave
c['slaves'] = [BuildSlave("bot1name", "bot1passwd")]
这里可以向服务器注册一个或多个客户端,指明BuildSlave的名字和密码(我们在创建客户端BuildSlave时候,
需要指定客户端名字和密码等参数)
c['slavePortnum'] = 9989
两端的通信端口,可以任意指定。如果有防火墙,记得打开这个端口。
from buildbot.changes.pb import PBChangeSource
c['change_source'] = PBChangeSource()
这个配置项告诉服务器发现代码改变的方式,有CVSToys,SVNPoller,BonsaiPoller等多种方式。
PBChangeSource是buildbot的build-in方式。
from buildbot.scheduler import Scheduler
c['schedulers'] = []
c['schedulers'].append(Scheduler(name="all", branch=None,
treeStableTimer=2*60,
builderNames=["buildbot-full"]))
这里是buildbot的调度器,可以控制客户端进行代码构建。name是调度器的名字,branch是代码branch,默认None
表示the default branch。treeStableTimer表示在进行代码构建之前,代码保持不变的必要时间。实际上就是代码上传的缓冲时间,过了这个时间,客户端才进行代码构建。builderNames是客户端BuildSlave列表。还有可以指定一个回调函数fileIsImportant,函数返回为真才进行代码构建,否测忽略这次代码更新。
上面调度器只有检查到代码变化后才控制客户端工作,buildbot还提供了另一种调度器Periodic,可以周期的进行代码
构建,无论是否有代码变化。举个例子:
periodic = Periodic("every_30_minutes", ["mybuilder", "mybuilder2"], 30*60)
c['schedulers'] = [periodic]
显然这表示mybuilder和mybuilder2两个BuildSlave每过30分钟进行一次代码构建。
cvsroot = ":pserver:anonymous@cvs.sourceforge.net:/cvsroot/buildbot"
cvsmodule = "buildbot"
from buildbot.process import factory
from buildbot.steps.source import CVS
from buildbot.steps.shell import Compile
from buildbot.steps.python_twisted import Trial
f1 = factory.BuildFactory()
f1.addStep(CVS(cvsroot=cvsroot, cvsmodule=cvsmodule, login="", mode="copy"))
f1.addStep(Compile(command=["python", "./setup.py", "build"]))
f1.addStep(Trial(testpath="."))
b1 = {'name': "buildbot-full",
'slavename': "bot1name",
'builddir': "full",
'factory': f1,
}
c['builders'] = [b1]
这个配置项定义一个具体的Builders列表。每个BUILDER的配置选项有5个关键字,分别表示Build名,slave名,构建
目录和一个定义build如何进行的BuildFactory。上面的例子中的BuildFactory分三个步骤,现从CVS下载源码,接着
编译,最后测试。针对具体的项目,我们可以自己定义,无非是通过addStep添加构建步骤。
c['status'] = []
from buildbot.status import html
c['status'].append(html.WebStatus(http_port=8010))
这个配置项定义buildbot的状态报告,可以有多中表现形式,包括 web pages, email senders, and IRC bots等
c['projectName'] = "Buildbot"
c['projectURL'] = ""
c['buildbotURL'] = ""
最后定义项目信息,我们可以从访问buildbot网页报告。这个端口必须和上面的http_port
一致,如果有防火墙,记得打开这个端口。
在启动之前,可以测试下配置文件。
buildbot checkconfig master.cfg
如果正确,信息如下:
Config file is good!
启动服务器:
buildbot start BASEDIR
看到如下信息说明服务器正常启动
。。。。。。
2008-07-05 04:59:46+0000 [-] configuration update started
2008-07-05 04:59:46+0000 [-] configuration update complete
The buildmaster appears to have (re)started correctly.
服务器启动的所以log保存在BASEDIR/twistd.log中。
停止服务器:
buildbot stop BASEDIR
2.setup buildbot slave (client)
buildbot create-slave --umask=022 ~/buildslave buildmaster.example.org:42012 myslavename mypasswd
buildbot create-slave build_test/ localhost:8010 myslave 123
命令运行后,会在BASEDIR目录下生成客户端配置信息。不要大的改动,BASEDIR/info/admin包含你的名字和邮件
地址,BASEDIR/info/host是客户端机器的配置(内存,CPU信息等),这些信息会出现在web pages上。
启动客户端:
buildbot start BASEDIR
看到如下信息说明服务器正常启动
2008/07/07 22:27 +0800 [-] Starting factory
2008/07/07 22:27 +0800 [Broker,client] message from master: attached
The buildslave appears to have (re)started correctly
客户端启动的所以log保存在BASEDIR/twistd.log中。
停止客户端:
buildbot stop BASEDIR
最后附上我自己的master.cfg
|
文件: | master.cfg.zip |
大小: | 3KB |
下载: | 下载 |
|
还有个截图: