Buildbot 简介

什么是Buildbot

Buildbot 是一个自动化的持续集成框架,可以编译,发布,自动化测试,基于 Python,可扩展性强。比如有新提交触发整个流程,或者定时触发。详细见官网

安装

安装Python

官网

安装 pywin32

下载地址

安装pip

1
pip install --upgrade pip

安装buildbot

1
pip install buildbot[bundle]

创建master

  • 创建一个根目录,比如 xxx/TestProject,并进到这个目录, 运行命令
1
buildbot create-master master
  • 完成之后,目录下就会出现master目录,复制默认的配置文件
1
copy master\master.cfg.sample master\master.cfg
1
buildbot start master
  • 如果修改了配置文件,需要执行以下命令来生效
1
buildbot reconfig master

创建worker

  • 进入之前的根目录,执行命令
1
2
pip install buildbot-worker
pip install setuptools-trial
  • 创建worker
1
buildbot-worker create-worker worker localhost example-worker pass
  • create-worker 参数

    • worker: worker的名称
    • localhost: 要连接的master地址,这里是本机地址
    • example-worker: worker用户名,要配置在master的配置文件中
    • pass: worker密码,要配置在master的配置文件中
  • 启动 worker

1
buildbot-worker start worker
  • 运行成功后,打开主页,就会看见一个runtests测试项目

执行编译

  • 打开http://localhost:8010/Builds -> Builders -> runtests,然后再点右上角 force 按钮,再点 Start Build 开始编译

自定义

增加编译属性

Scheduler 有个 properties 属性,可以在这里添加各个选项,然后就会在页面上显示出来,比如

1
2
3
4
5
6
7
8

c['schedulers'].append(
schedulers.ForceScheduler(
# ...
properties=[
util.BooleanParameter(name="is_debug", label="Debug", default=True),
util.BooleanParameter(name="is_release", label="Release", default=True),
]))

以上代码添加了两个Bool 型选项,相应的在页面上就会出现两个复选框,其他常用类型的Parameter如下

  • NestedParameter: 分组参数,可以在fields里添加其他Parameter,这些Parameter构成一组。
  • FixedParameter: 固定参数,这些参数不会在页面上显示出来,但是依然会用默认值生成相应的参数,所以如果一些默认的参数不想在页面上显示,那么可以将这些参数改成FixedParameter。例如不想显示reason: reason=util.FixedParameter(name="reason", default="force build")
  • StringParameter: 字符串参数
  • TextParameter: 字符串参数,可多行输入
  • IntParameter: 整型参数
  • BooleanParameter: 布尔型参数
  • UserNameParameter: 用户名参数
  • ChoiceStringParameter: 也是字符串参数,不过在页面上以组合框显示

动态控制build step

step 有一个doStepIf属性,可以和上面的自定义编译属性结合来动态控制是否触发一个编译步骤,例如

1
2
3
factory.addStep(steps.ShellCommand(name = 'Test',
command=["echo", "Debug"],
doStepIf=(util.Property('is_debug') == True)))

只有在勾选了Debug后,才会触发这个编译步骤,否则跳过