Buildbot安装步骤:
Buildbotmanual 0.8.2 : http://buildbot.net/buildbot/docs/current/index.html
BuildBot是一个自动构建工具。每当代码有改变,服务器要求不同平台上的客户端立即进行代码构建和测试,收集并报告不同平台的构建和测试结果。BuildBot用python写的,该python程序只依赖python环境和Twisted(一个python网络框架),可以在很多平台运行。下面详细介绍buildbot的安装和配置步骤。
首先介绍下如何安装:
1.install Twisted
Twisted依赖zope.interface and Python
wget -c http://tmrc.mit.edu/mirror/twisted/Twisted/8.1/Twisted-8.1.0.tar.bz2
pythonsetup.py install
installzope.interface
wget -c http://www.zope.org/Products/ZopeInterface/3.3.0/zope.interface-3.3.0.tar.gz
pythonsetup.py build
pythonsetup.py install
2.buildbot 源码
buildbot依赖Twistedand Python
wget –c http://buildbot.googlecode.com/files/buildbot-0.8.2.tar.gz
pythonsetup.py build
pythonsetup.py install
wget –c http://buildbot.googlecode.com/files/buildbot-slave-0.8.2.tar.gz
pythonsetup.py build
pythonsetup.py install
3.check buildbot is ready
$buildbot –version and buildslave --version
Buildbotversion: 0.8.2
Buildslaveversion: 0.8.2
Twistedversion: 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字典数据结构中。
frombuildbot.buildslave import BuildSlave
c['slaves']= [BuildSlave("bot1name", "bot1passwd")]
这里可以向服务器注册一个或多个客户端,指明BuildSlave的名字和密码(我们在创建客户端BuildSlave时候,需要指定客户端名字和密码等参数)
c['slavePortnum']= 9989
两端的通信端口,可以任意指定。如果有防火墙,记得打开这个端口。
frombuildbot.changes.pb import PBChangeSource
c['change_source']= PBChangeSource()
这个配置项告诉服务器发现代码改变的方式,有CVSToys,SVNPoller,BonsaiPoller等多种方式。
PBChangeSource是buildbot的build-in方式。
frombuildbot.scheduler import Scheduler
c['schedulers']= []
c['schedulers'].append(Scheduler(name="all",branch=None,
treeStableTimer=2*60,
builderNames=["buildbot-full"]))
这里是buildbot的调度器,可以控制客户端进行代码构建。name是调度器的名字,branch是代码branch,默认None,表示thedefault 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:[email protected]:/cvsroot/buildbot"
cvsmodule= "buildbot"
frombuildbot.process import factory
frombuildbot.steps.source import CVS
frombuildbot.steps.shell import Compile
frombuildbot.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']= []
frombuildbot.status import html
c['status'].append(html.WebStatus(http_port=8010))
这个配置项定义buildbot的状态报告,可以有多中表现形式,包括 webpages, email senders, and IRC bots等
c['projectName']= "Buildbot"
c['projectURL']= "http://buildbot.sourceforge.net/"
c['buildbotURL']= "http://localhost:8010/"
最后定义项目信息,我们可以从http://localhost:8010/访问buildbot网页报告。这个端口必须和上面的http_port
一致,如果有防火墙,记得打开这个端口。
在启动之前,可以测试下配置文件。
buildbot checkconfig master.cfg
如果正确,信息如下:
Configfile is good!
启动服务器:
buildbot start BASEDIR
看到如下信息说明服务器正常启动
……
2010-12-1114:02:34+0800 [-] twisted.spread.pb.PBServerFactory starting on 9986
2010-12-1114:02:34+0800 [-] Starting factory <twisted.spread.pb.PBServerFactoryinstance at 0x1036cf8>
2010-12-1114:02:34+0800 [-] configuration update complete
Thebuildmaster appears to have (re)started correctly.
服务器启动的所以log保存在BASEDIR/twistd.log中。
停止服务器:
buildbot stop BASEDIR
2. setupbuildbot slave (client)
buildslave create-slave BASEDIR MASTERHOST:PORTSLAVENAMEPASSWORD
例如:buildslave create-slave build_test/ localhost:8010 myslave 123
命令运行后,会在BASEDIR目录下生成客户端配置信息。不要大的改动,BASEDIR/info/admin包含你的名字和邮件
地址,BASEDIR/info/host是客户端机器的配置(内存,CPU信息等),这些信息会出现在web pages上。
启动客户端:
buildslave start BASEDIR
看到如下信息说明服务器正常启动
……
2010-12-1114:03:20+0800 [-] Connecting to 127.0.0.1:9986
2010-12-1114:03:20+0800 [Broker,client] message from master: attached
Thebuildslave appears to have (re)started correctly.
客户端启动的所以log保存在BASEDIR/twistd.log中。
停止客户端:
buildslave stop BASEDIR
最后附上我自己的master.cfg
|