buildbot安装配置笔记
crook
|
1#
crook 发表于 2008-07-08 22:21
buildbot安装配置笔记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 python setup.py install --prefix=$HOME install zope.interface wet -c http://www.zope.org/Products/ZopeInterface/3.3.0/zope.interface-3.3.0.tar.gz python setup.py build python setup.py install --prefix=$HOME 2。 buildbot 源码 buildbot依赖Twisted和Python SF打不开,不过可以到python网站下载 wget -c http://pypi.python.org/packages/source/b/buildbot/buildbot-0.7.7.tar.gz#md5=4647a15a9d9b2db6a5b3493ac78e11d9 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'] = "http://buildbot.sourceforge.net/" c['buildbotURL'] = "http://localhost:8010/" 最后定义项目信息,我们可以从http://localhost:8010/访问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 下载: 下载 还有个截图: |