Buildbot 的 master 和 worker 架构是如何工作的?

Buildbot 的 master 和 worker 是一套“调度—执行”分离的架构:master 负责监控源码变更、排队和协调作业、汇总结果;worker 负责在各自的操作系统上真正执行作业。一个 Buildbot 安装包含一个或多个 master,以及一组 worker。这套结构适合需要跨平台、分布式并行执行构建与测试任务的团队。

两类角色的分工

master:调度与协调中心

master 是 Buildbot 的核心,承担以下职责:

  • 监控源码仓库的变更
  • 将作业排队,并在所需资源可用时触发执行
  • 协调各个 worker 的活动
  • 向用户和开发者报告结果

从本质上看,Buildbot 是一个作业调度系统:它把作业放入队列,等资源就绪后执行,最后报告结果。master 就是这个调度逻辑的所在地。

worker:实际执行作业

worker 运行在各种操作系统上,负责执行 master 分配下来的实际作业。由于 worker 可以跨平台部署,同一套流程能够覆盖不同系统环境下的构建和测试需求。

一次作业的流转过程

把上面的分工串起来,一次典型的执行流程是:

  1. master 监控源码仓库,发现变更。
  2. master 将相应作业加入队列。
  3. 当所需资源(可用的 worker)就绪时,master 把作业派发给 worker。
  4. worker 在自身操作系统上执行作业。
  5. master 收集执行结果,并向用户和开发者报告。

这个流程对应 Buildbot 支持的自动化范围:持续集成、持续部署、发布管理,以及任何可以自行设计的流程。

配置方式:用 Python 脚本描述整个系统

Buildbot 通过向 master 提供一个 Python 配置脚本来完成配置。这个脚本可以很简单,只配置内置组件;但由于具备 Python 的完整表达能力,也可以做到:

  • 动态生成配置
  • 定制组件
  • 实现其他自行设计的逻辑

框架本身用 Twisted Python 实现,兼容所有主流操作系统。

为什么采用 master/worker 分离

这种架构带来几个直接结果:

特性 说明
分布式、并行执行 作业可跨多个平台并行运行
跨平台 worker 可运行在多种操作系统上
可扩展 框架用于实现匹配自身工作流的系统,并随组织成长
灵活集成 与版本控制系统灵活集成,并提供丰富的状态报告

自动化带来的收益是:流程可重复、可靠,并且可以按需要的频率运行。

上手路径

如果想实际运行和配置 Buildbot,官方建议从 Buildbot Tutorial 开始,它提供了循序渐进的入门介绍。此外还可以参考文档、下载安装,或通过邮件列表、IRC 的 #buildbot 频道以及 Discord 服务器参与交流。

buildbot.net
Buildbot - The Continuous Integration Framework