You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
BuildBot是一个开源的基于python的持续集成系统,它能够以下三种方式触发相应的自动构建和测试运行,从而迅速的发现问题所在,同时指出造成这个错误的开发人员,当然我们还可以通过页面直观的了解到当前所有和master绑定的任务以及各种测试状态。
监控代码管理库的变化从而触发构建测试任务
通过配置从而定时触发构建测试任务
通过配置从而允许强制触发构建测试任务
因为它有很多比较好的特点:
跨平台:可以运行在各种平台上,实现不同平台上的测试
可以处理各种语言编写的程序,例如C,Java,Python
环境要求低并且配置简单:仅仅需要Python,和网络库Twisted
结果的交付方式多,例如Email,webpage,IRC或者其他协议工具
通过子类继承并重写父类从而灵活的配置
很好的实现了分布式部署和集成工作
BuildBot用python写的,该python程序只依赖python环境和Twisted(一个python网络框架),可以在很多平台运行。 自动化构建一般包括自动下载源码,编译,测试,打包。
2.1系统架构
Buildbot包含一个服务端,一个或多个客户端。以星形拓扑结构连接。需要配合GIT,SVN,CVS等相关版本工具使用。master可以给任意一个slave发送命令,slave执行master发送的命令并返回执行的结果。
来回发送大量命令是不太合适的,可以在slave中写出一个总的执行脚本,而master发送的命令只是启动这个脚本。
Buildbot的原理是git,SVN等源码服务器上代码发生变化后,buildmaster(服务端)通知连接到它上的buildslave(客户端)从git或SVN服务器上自动下载源码,编译,测试,打包。最后把各个buildslave的自动化构建的结果搜集起来在web上展现,或通过email,IRC等方式通知相应的项目开发人员。
2.2测试状态结构体系
master有一个总的status对象负责监控所有连接到自己的slave的连接状态对象,通过这个连接对象获得完整构建的状态及层次结构。
在master.cfg配置文件中,控制各个status对象,获得每个slave的连接状态,以前的构建信息等,通过浏览器创建一个url调用html.Waterfall插件的query-on-demand接口可以获得Builder, Build, Step, and LogFile等各种请求信息。
每一次的项目构建都可以产生一个status对象,可以通过MailNotifier每一次构建都建立一个邮件列表。
Buildbot所需要的Python依赖环境比较多,而且版本依赖比较严重,0.8.x和0.9.x中很多类的使用以及命名有很大区别本教程的master是以0.9.0b7这个版本来搭建的。
Python 版本:2.7
官方手册中要求的是2.6或2.7,不能使用其他的版本
Twisted 版本:11.0.0及以上
sqlite3 版本:3.7.0及以上
Jinja2 版本:2.1及以上
SQLAlchemy 版本:0.8.0及以上
SQLAlchemy-Migrate 版本:0.9.0及以上
Python-Dateutil 版本1.5及以上
Autobahn0.10.0及以上
windows下还需要安装Pywin32支持
https://github.com/crossbario/autobahn-python
WebSocket and WAMP in Python for Twisted and asyncio
http://crossbar.io/autobahn
Autobahn|Python is a subproject of Autobahn and provides open-source implementations of:
The WebSocket Protocol
The Web Application Messaging Protocol (WAMP)
for Python 2 and 3, and running on Twisted and asyncio.