搜索
您的当前位置:首页正文

buildbot安装与使用

来源:知库网


目 录

1. Buildbot简介 ..................................................................................................................................................... 2 2. buildbot工作原理 ............................................................................................................................................. 2 3. BuildBot的安装 ................................................................................................................................................ 2

3.1 3.2 3.3 3.4

安装Python ........................................................................................................................................... 2 需要安装哪些插件 ............................................................................................................................... 2 安装插件 ............................................................................................................................................... 3 测试安装的版本 ................................................................................................................................... 4

4. BuildBot创建master和slave .......................................................................................................................... 4

4.1 4.2 4.3 4.4

新建master服务端 ............................................................................................................................... 4 新建1个slave客户端 ......................................................................................................................... 4 怎样启动buildbot ................................................................................................................................. 5 Buildbot运行日志 ................................................................................................................................ 5

5. BuildBot的配置 ................................................................................................................................................ 6

5.1 5.2 5.3 5.4 5.5 5.6 5.7

客户端信息 ........................................................................................................................................... 6 监控源码改变的方式 ........................................................................................................................... 6 调度器 ................................................................................................................................................... 6 构建过程 ............................................................................................................................................... 7 buildbot的状态报告 ............................................................................................................................. 7 项目信息 ............................................................................................................................................... 8 数据库信息 ........................................................................................................................................... 8

6. BuildBot研究的总结 ........................................................................................................................................ 8 7. 参考资料............................................................................................................................................................ 8

1. Buildbot简介

BuildBot是一个自动构建工具。每当代码有改变,服务器要求不同平台上的客户端立即进行代码构建和测试,收集并报告不同平台的构建和测试结果。BuildBot用python写的,该python程序只依赖python环境和Twisted(一个python网络框架),可以在很多平台运行。

自动化构建一般包括自动下载源码,编译,测试,打包。

2. buildbot工作原理

Buildbot包含一个服务端,一个或多个客户端。以星形拓扑结构连接。需要配合SVN,CVS等相关版本工具使用。

Build的原理是SVN等源码服务器上代码发生变化后,buildmaster(服务端)通知连接到它上的buildslave(客户端)从SVN服务器上自动下载源码,编译,测试,打包。最后把各个buildslave的自动化构建的结果搜集起来在web上展现,或通过emaill,IRC等方式通知相应的项目开发人员。

3. BuildBot的安装 3.1 安装Python

Python有2.x和3.x版本,buildbot不支持3.x,本次我们采用2.75版本,首先安装Python,设置path环境变量,把这2个地址C:\\Python27,C:\\Python27\\Scripts加入到path变量中。

3.2 需要安装哪些插件

安装buildbot,需要安装多个插件,需要哪些插件在buildbot官方文档可以找到,有些官方文档没提到,但也是必须的。

需要的插件有:Twisted,pywin32,pyOpenSSL,zope.interface,Jinja2,setuptools,python-dateutil,SQLAlchemy,sqlalchemy-migrate,buildbot,buildbot-slave。这些插件在Python的网站和相关网站上都可以下载到,也可以在百度中搜索插件名下载。

第 2 页 共 8 页

3.3 安装插件

Twisted,pywin32,pyOpenSSL是安装程序,点击安装即可。

其余插件都是源码包,需解压后,编译,安装。如安装Jinja2,下载Jinja2-2.7.tar.gz,解压得到Jinja2-2.7目录。cmd下,进入Jinja2-2.7目录,执行python setup.py build,如下图:

Build完后,再执行python setup.py install,如下图:

安装完成后Jinja2被安装在了目录C:\\Python27\\Lib\\site-packages下。其余源码包安装方式都一样。

第 3 页 共 8 页

3.4 测试安装的版本

Buildbot包是的Buildbot服务端安装程序,buildbot-slave包是的Buildbot客户端安装程序,安装完成后Buildbot的可执行程序安装到了C:\\Python27\\Scripts目录下。

所需插件包都安装完成后,检验Buildbot是否安装成功。

在cmd下输入buildbot --version,如下图显示表示buildbot安装成功。

在cmd下输入buildslave--version,如下图显示表示buildslave安装成功。

4. BuildBot创建master和slave

新建前新建1个目录,如build。

4.1 新建master服务端

cmd下进入目录build,执行buildbot create-master master。

其中master为服务端名称,可以任意取,命令执行完毕后会在build中生成1个master目录,会在

master目录中生成一个简单的buildbot服务器配置文件示例master.cfg.sample。

把它的名称改成master.cfg,我们所有对buildbot的配置都是基于这个文件完成的。

4.2 新建1个slave客户端

cmd下进入目录build, 执行buildslave create-slave slave localhost:9989 ygf616 123456

第 4 页 共 8 页

其中slave为客户端名称,可以任意取,

localhost:9989为slave与master通讯的ip和端口, ygf616 123456为slave对应的用户名和密码,可以任意取。 命令执行完毕后会在build中生成1个slave目录

4.3 怎样启动buildbot

启动,停止,重启master,buildbot start/stop/restart master。 测试服务端连接:

在浏览器中访问http://localhost:8010/,如果连接成功表示服务启动成功。

启动,停止,重启slave,buildslave start/stop/restart slave,启动客户端时确保所对应的服务端已启动,客户端才能连上去。

测试客户端连接:

点击Buildslaves查看连接数。

4.4 Buildbot运行日志

Buildbot运行会在服务端产生1个日志文件twistd.log,通过它可以查看一些运行信息和错误信息。 在每个客户端下也会产生1个日志文件twistd.log,通过它可以查看对应客户端的一些运行信息和错误

第 5 页 共 8 页

信息。

5. BuildBot的配置

BuildBot运行都是通过对服务端下的master.cfg来配置完成的。 文件中#表示注释。 c = BuildmasterConfig = {}

所有的配置数据都保存在一个python字典数据结构中。

配置包括:客户端信息,监控源码的改变方式,调度器,构建过程,buildbot的状态报告,项目信息,数据库信息。

5.1 客户端信息

配置文件中BUILDSLAVES

from buildbot.buildslave import BuildSlave

c['slaves'] = [BuildSlave(\"ygf616\

这里可以向服务器注册一个或多个客户端,指明BuildSlave的名字和密码(我们在创建客户端BuildSlave时候,需要指定客户端名字和密码等参数)

c['slavePortnum'] = 9989

两端的通信端口,可以任意指定。如果有防火墙,记得打开这个端口。

5.2 监控源码改变的方式

配置文件中CHANGESOURCES

from buildbot.changes.svnpoller import SVNPoller c['change_source'] = SVNPoller(

svnurl=\"http://WIN-8HOA0OKR8O3:8091/svn/CSha/HelloWorld/\ pollinterval=5, histmax=10,

svnbin='C:\\\\Program Files\\\\TortoiseSVN\\\\bin\\\\svn.exe', svnuser=\"ceshi2\ svnpasswd=\"123456\"

这个配置项告诉服务器发现代码改变的方式,有CVSToys,SVNPoller,BonsaiPoller等多种方式。

5.3 调度器

配置文件中SCHEDULERS

from buildbot.schedulers.basic import SingleBranchScheduler from buildbot.changes import filter from buildbot.schedulers import timed l=

SingleBranchScheduler(name=\"quick\这里是buildbot的调度器,可以控制客户端进行代码构建。name是调度器的名字,branch是代码branch,默认None,表示the default branch。treeStableTimer表示在进行代码构建之前,代码保持不变的必要时间。实际上就是代码上传的缓冲时间,过了这个时间,客户端才进行代码构建。builderNames是客户端BuildSlave

第 6 页 共 8 页

列表。上面调度器只有检查到代码变化后才控制客户端工作

m= timed.Periodic(name=\"daily\上面是另一种调度器Periodic,可以周期的进行代码构建,无论代码是否有变化 c['schedulers']=[l,m]

5.4 构建过程

配置文件中BUILDERS

from buildbot.process.factory import BuildFactory from buildbot.steps.source.svn import SVN from buildbot.config import BuilderConfig from buildbot.steps.vstudio import VS2010

factory=BuildFactory()

factory.addStep(SVN(repourl='http://WIN-8HOA0OKR8O3:8091/svn/CSha/HelloWorld/', mode='full')) #第一步

factory.addStep(VS2010(projectfile=\"HelloWorld.sln\第二步 c['builders'] = [

BuilderConfig(name=\"Single300\BuilderConfig(name=\"daily600\

这个配置项定义一个具体的Builders列表。每个BUILDER的配置选项有3个关键字,分别表示Build名,slave名,一个定义build如何进行的BuildFactory。

上面的例子中的BuildFactory分两个步骤,先从SVN下载源码,接着编译。针对具体的项目,我们可以自己定义,无非是通过addStep添加构建步骤。

5.5 buildbot的状态报告

配置文件中STATUS TARGETS c['status'] = []

from buildbot.status import html

from buildbot.status.web import authz, auth authz_cfg=authz.Authz(

auth=auth.BasicAuth([(\"ygf\ gracefulShutdown = False,

forceBuild = 'auth', # use this to test your slave once it is set up forceAllBuilds = False, pingBuilder = False, stopBuild = False, stopAllBuilds = False, cancelPendingBuild = False,)

c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg))

第 7 页 共 8 页

这个配置项定义buildbot的状态报告,可以有多中表现形式,包括 web pages,email ,and IRC 等。

from buildbot.status import mail

from buildbot.status.mail import MailNotifier mn = mail.MailNotifier(fromaddr=\"test@qq.com\ sendToInterestedUsers=False, extraRecipients=[\"test@163.com\"], relayhost=\"smtp.qq.com\

smtpUser=\"test@qq.com\#c['status'].append(mn) 上面这段脚本是发送email。

5.6 项目信息

配置文件中PROJECT IDENTITY c['title'] = \"MyOA\"

c['titleURL'] = \"http://www.rockontrol.com\" c['buildbotURL'] = http://localhost:8010/

最后定义项目信息,我们可以从http://localhost:8010/访问buildbot网页报告。这个端口必须和上面的http_port一致,如果有防火墙,记得打开这个端口。

5.7 数据库信息

配置文件中DB URL

c['db'] = {'db_url' : \"sqlite:///state.sqlite\

buildbot所使用的数据库,默认用sqlite,可以换成其他数据库,如mysql

6. BuildBot总结

Buildbot是在buildsalve客户端端进行自动化构建,而并不是在buildmaster服务器端。

Buildbot应用到不同项目中构建过程脚本不一样。我们的例子中只有VS项目的下载源码,编译。关于测试,需要编写单元测试,在构建过程中执行单元测试,关于打包,没研究出来。VS项目的测试与打包需要继续研究,没有好的思路。

在网上没有找到buildbot中运行Java项目的例子和脚本。Java项目构建需要继续研究,没有好的思路。 现在可以进行VS项目的自动编译。

7. 参考资料

Buildbot 官方文档:http://docs.buildbot.net/0.8.7p1/genindex.html Buildbot安装步骤:http://blog.csdn.net/sharpljc/article/details/6070783

第 8 页 共 8 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Top