buildbot安装步骤(仅更新原帖中使用的版本)

来源:互联网 发布:java long转时间 编辑:程序博客网 时间:2024/05/16 11:08

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:anonymous@cvs.sourceforge.net:/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
文件:master.cfg.zip大小:3KB下载:下载
还有个截图: