英文来源:Mozilla’s Build System
  中文出处:开放博客,由灰狐翻译小组制作

  Mozilla 构建系统是一个非常酷的分布式系统,运行在BuildBot上。系统能在每次修改后自动重新构建和测试代码树。

  目前,整个构建基础设施使用了大约 1,000 台机器并分组在3个 pools 池中,每个 pool 都有数台Build Masters 和很多台 Slaves 组成:

  构建池(Build Pool) 处理所有更改触发的构建,除了那些要去试验的构建:

  • 4 台 Build Masters
  • 大约 300 台 Slaves

  试验构建池(Try Build Pool) 处理所有试验构建:

  • 1 台 Build Master
  • 大约 200 台 Slaves

  测试池(Test Pool) 处理所有的测试,包括试验(Try):

  • 7 台 Test Masters
  • 大约 400 台 Slaves

  它是如何工作的?

  hg poller 每隔几分钟就在 hg.mozilla.org 仓库里寻找新的更改。这些更改通过构建调度者(Build Scheduler Master) 获得,并创建构建请求(Build Requests),为每一个支持的平台都创建一个。这些构建请求以待定的方式进入调度数据库。Build Masters 寻找待定的构建请求然后当有空闲Slaves就分配给它们。

  为构建完整,Build Master 将状态更新到调度数据库中。另外,测试调度者(Test Scheduler Master) 为相应的测试创建测试构建请求。

  接着,测试构建请求由 Test Masters 获得并分配给空闲的 Slaves。当测试完成,Test Master 更新它们的状态到调度数据库中。

  每个 Build Master 和 Test Master 控制它们自己的一组 Slaves。

  构建运行生命周期

  每个推向 mozilla-central 的请求,如果成功的话,会生成总数为 168  个构建请求(截至2010年10月,但在未来会有所变化),其中 10 个构建(支持10种平台),108个单元测试和50个 talos tests。所有这些构建请求组成一个 Build Run。

  10种平台的构建都需要有一套自己的测试请求。仅当相应的构建成功完成这些测试才被创建。这就意味着如果构建失败,这些测试将不被创建,Build Run 也不会有168个构建请求,

  Build Run 生命周期中有两个非常重要的测量:等待时间(Wait Time) 和 端对端时间(End to End Time)。

  等待时间测量在队列中的构建请求在开始执行前要等待多长时间,更具体的讲,它测量生成构建请求改变的时间戳和构建请求赋予空闲 Slave 的时间戳之前的时间差。(见上面 Build Run 的生命周期图)

  端对端时间测量一个 Build Run 完成需要多长时间。也就是说,触发这个 Build Run  改变的时间戳和最终生成构建请求的时间戳之间的时间差(换句话说,就是当所有的构建和测试完成)。(见上面 Build Run 生命周期图)

  正常情况下 mozilla-central 的端对端时间会少于4小时,但是随着系统负载的增加时间会有所延长。

  Mac minis 垒的墙

  构建是在一个虚拟机组合之上完成的,包含 1U 服务器,xserves 和 Mac minis,并且所有的测试都是在 Mac Minis 上完成的。

  这堵 mac minis 墙是由 400 个 Mac minis 盒子垒成的,它被放在发布工程师在山景城的办公室里。

http://kb.cnblogs.com/page/100944/

Mozilla 构建系统(转)相关推荐

  1. google gn构建系统的介绍

    GN语言和操作 GN语言和操作 内容 介绍 使用内置的帮助 设计理念 语言 字符串 清单 条件语句 循环 函数调用 作用域和执行Scoping and execution 命名事物 文件和目录名称 构 ...

  2. google的gn构建系统

    什么是GN? GN是一个生成Ninja构建文件的元构建系统,以便你可以用Ninja构建Chromium. 你为什么从GYP切换? 我们相信GN文件比GYP文件更具可读性和可维护性. GN很快: GN比 ...

  3. 【Matlab 控制】构建系统,绘制零极点

    Matlab 构建系统 绘制零极点 >> num0 = 5*[1 5 6]; den0 = [1 6 10 8]; % 描述闭环传递函数的分子.分母多项式 >> sys0 = ...

  4. Qt Creator使用其他构建系统

    Qt Creator使用其他构建系统 使用其他构建系统 设置CMake 设置Qbs 设置一个Autotools项目 建立一个通用项目 设置Nimble 设置Meson 设置IncrediBuild 设 ...

  5. android系统自动构建,[系统集成] Android 自动构建系统

    一.简介 android app 自动构建服务器用于自动下载app代码.自动打包.发布,要建立这样的服务器,关键要解决以下几个问题: 1. android app 自动化打包 android 的打包一 ...

  6. [Gradle] 在 Eclipse 下利用 gradle 构建系统

    构建系统时候常常要用到 Ant, Maven 等工具,对于初学者来说,它们还是过于复杂,上手还是需要时间的.本文将向读者介绍一种全新的构建项目的方式 gradle,它简单.上手快,能大大节省项目的时间 ...

  7. QEMU 构建系统架构

    这份文档旨在帮助开发者理解 QEMU 构建系统的架构.正如使用 GNU autotools 的项目一样,QEMU 构建系统有两个阶段,第一步开发者运行 configure 脚本确定本地构建环境特性,然 ...

  8. 一直在构建版本_构建系统与代码结构SpringBoot

    从今天开始,我们进入SpringBoot的使用环节,这一部分包含了构建系统,自动配置,如何运行应用程序,自然也包括了一些使用SpringBoot的最佳实践.关于SpringBoot的介绍,Anders ...

  9. ROS2学习(十六).ROS概念 - 构建系统

    关于ROS 2的构建系统 `ament_package`包 **package.xml** **ament package** `ament_cmake`代码库 `ament_lint`代码库 构建工 ...

最新文章

  1. 2018-2019-1 20165206 《信息安全系统设计基础》第4周学习总结
  2. https原理与实践
  3. IHttpModule.Init方法被执行多次的原因
  4. python银行系统-python简单的银行系统
  5. Asp.net MVC Filter监控页面性能和运行时间
  6. app之---豆果美食
  7. Java Double类shortValue()方法与示例
  8. android 热修复视频,Android热修复
  9. 计算机设计大赛国奖作品_1. 项目概要
  10. 全局替换资源_BitLocker+VHD替换TrueCrypt及其后继VeraCrypt
  11. 熊猫分发_熊猫重命名列和索引
  12. 「拖放」Mac 的底层能力,也是效率神技
  13. APMServ5.2.6win10系统Apache、MySQL5.1启动失败解决办法
  14. python 和vba在财务上_各位大佬好,财务分析,要使用BI,VBA,Python,Wind学习那个可以对财务工作更加有益?...
  15. 简单说说WinHex(一)安装注册过程
  16. python 地震数据可视化
  17. 安农大计算机专业录取分数线,安徽农业大学+录取分数线
  18. matlab 死区,MATLAB对AC/DC/AC电源的死区效应谐波仿真
  19. 数字图像处理与Python实现-图像降噪-指数型高通滤波
  20. zip格式压缩文件并打包下载

热门文章

  1. codevs 1200:同余方程
  2. 当年只会C# 所以写C++就成这样了! log4cplus - log4net
  3. [SAP ABAP开发技术总结]CLEAR、REFRESH、FREE内表清理区别
  4. 工作流技术杂谈 --- 2008
  5. 靠谱推荐 | 我读完了所有数据产品经理的书?!
  6. 我的4条产品设计工作观
  7. 你不能准时下班的根本原因是……
  8. 从支付宝面试题谈:怎样有效减少用户咨询的客服成本
  9. 如何让产品不受到技术限制快速迭代?
  10. 【干货】功能堆砌or视觉美观?看优秀PM如何权衡