buildbot二:部署

一、环境准备:
  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支持

二、master环境搭建:

1.安装开发环境依赖:

查看系统相关:

uname -a # 显示电脑以及操作系统的相关信息,可知linux的内核版本是: 3.10.0-957.1.3.el7.x86_64
# 如,Linux instance-26x8vcvs 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
cat /proc/version # 查看linux内核版本,可知linux的内核版本是: 3.10.0-957.1.3.el7.x86_64,由centos发行
# 如,Linux version 3.10.0-957.1.3.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 29 14:49:43 UTC 2018
lsb_release -a  # 查看发行版本信息
# 如,
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.5.1804 (Core)
Release:        7.5.1804
Codename:       Core

 安装python编译依赖的环境,如下:

编译安装过程需要的库:

yum -y install gcc make zlib1g-dev

 bz2支持库(用于pip install 安装提供bz2格式的第三方库):

yum -y install libbz2-dev

 sqlite3支持库:

yum -y install libsqlite3-dev

 其他:安装第三方库需要的库:

yum -y install install python3-dev libxml2-dev libffi-dev libssl-dev libxslt1-dev libssl-dev libffi-dev build-essential 

ubuntu对应的命令:

sudo apt-get install gcc make zlib1g-dev
sudo apt-get install libbz2-dev
sudo apt-get install libsqlite3-dev
sudo apt-get install python3-dev libxml2-dev libffi-dev libssl-dev libxslt1-dev

 2.编译安装Python:

wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar -zxvf  Python-3.6.1.tar.xz
cd Python-3.6.1
./configure  # 配置
make # 编译
sudo make install # sudo -H make install

 3.安装pip:

wget href="https://files.pythonhosted.org/packages/93/ab/f86b61bef7ab14909bd7ec3cd2178feb0a1c86d451bc9bccd5a1aedcde5f/pip-19.1.1.tar.gz"
tar -zxvf pip-19.1.1.tar.gz
cd pip-19.1.1
python setup.py install

 4.install Twisted:

twisted依赖python和zope.interface,在安装twisted之前,以下组件是必须的,否则会报错

sudo yum install python-devel python-crypto pyOpenSSL zope

 安装twisted

pip install Twisted==18.7.0rc1

twisted需要与python的版本匹配,检查twisted是否可用:

from twisted.internet import reactor

5.安装 buildbot(依赖Twisted和Python):

buildbot依赖Twisted和Python,还依赖six

pip方式:

pip install six
pip install buildbot==1.1.0
pip install buildbot-www==1.1.0
pip install buildbot-grid-view==1.1.0
pip install buildbot-console-view==1.1.0
pip install buildbot-waterfall-view==1.1.0

 

检测buildbot是否安装成功:$buildbot --version

三、master搭建

1.建立buildbot master

$buildbot create-master buildbot_master,该命令会在当前目录下生成buildbot_master目录,且该目录下有一个配置文件为master.cfg.sample

2.测试master.cfg配置文件:

$cd buildbot_master              
$mv master.cfg.sample master.cfg 
$buildbot checkconfig master.cfg 

测试中提示失败,six包的版本太低,升级six

pip install -U six

正确则:Config file is good!

8.配置master.cfg:

首先我们先要知道我们master主机的IP地址,之后打开我们的master.cfg文件,找到c[‘buildbotURL’]c[‘www’] 这两个属性,修改他们的URL(本地主机的IP地址)和端口号。如下图:

9.启动、停止build-master服务器:

$cd buildbot_master
$buildbot start ./  
$buildbot stop ./ 

  buildbot是在web页面对我们的项目测试以及代码监控进行显示,对于一个局域网下,只要我们能够连接到这台虚拟机,我们就可以通过web页面的形式来随时了解我们的slave的连接以及代码的变化和以往的测试情况。

如果报错,根据twistd.log日志提示,检查是否缺少组件。

10.查看twistd.logtwi日志:

启动了buildmaster,buildmaster文件夹目录下多出来了一个twistd.log日志文件,由于buildbot所依赖的插件比较多,第一次运行不见得能成功。

所以我们需要去twistd.log文件查看我们的buildbot是否启动成功,如果不成功会在.log中找到我们的出错信息。
比如,缺少waterfall_view这个插件,我们可以去buildbot官网上去下载安装,安装步骤如buildbot安装步骤

四、slave部署

对于Buildbot-worker,安装如下包即可:

pip install buildbot-worker
buildbot-worker create-worker worker LOCAL-HOST NAME PASSWD # 创建Buildbot-worker,worker为目录名
buildbot-worker start worker # 启动Buildbot-worker
buildbot-worker stop worker

说明:

1.NAME和PASSWD均会在配置Buildbot-master时用到,这些信息用于在Buildbot-master中认证Buildbot-worker,所以只有得到Buildbot-master授权的Buildbot-worker才可以得到连接。这个要和master下的master.cfg 中的 c['workers'] 配置保持一致。

2.LOCAL-HOST: 这是在本机上创建worker的方法,如果在其他机器上,要把localhost换成master所在的ip。

 

由于Buildbot-worker节点执行具体的构建工作,因此还需根据项目安装编译、测试必须的依赖和工具,目前暂时用到的是gtest、cmake、g++、gmake(FreeBSD下的GNU make)等,根据需要进行定制,我是手动去部署的,但是这些工作实在冗余,如果数量巨大则建议使用Ansible进行管理。

 

 

 

 



 

 

 

 



posted on 2019-06-28 16:54  myworldworld  阅读(899)  评论(0)    收藏  举报

导航