NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Mozilla 发布 Firefox 的流程

  • 2014-07-10
  • 本文字数:2067 字

    阅读完需:约 7 分钟

从 2004 年开始,Mozilla 发布了很少几个版本的 Firefox,到 2010 年 7 月,版本号达到了 4.0。但是从 2011 年开始,Mozilla 学习 Google,改变了他们的发布周期,现在的版本号是 30。一直以来,发布工程师团队不断改进着做一个新版本浏览器的流程。工程师四人小组——Chris AtLee、Lukas Blakk、John O’Duinn、Armen Zambrano Gasparian,在Dr. Dobb’s 杂志上发表了一篇文章,描述了发布流程的细节,在这里我们将会把这个流程的精华展示给大家。

Mozilla 考虑到他们的浏览器可能会有的安全漏洞,设计了一套发布流程,可以快速地制作一个“安全修复”版本,这个版本会迅速地推送给用户,以便及时修复已知的漏洞。整个流程会尽可能地自动化,减少“人力介入”,并改进“健壮性和开发周期”。安全修复版本和常规版本都会用到这个流程。每个版本发布后,Mozilla 会做一个事后分析,看看是否有可以改进的问题。在下一个版本发布前,发现的问题会很快被修复。

发布流程由一名发布协调人员来发起,这个人需要“参加分类会议,理解这个版本中各个修改的来龙去脉,公正地仲裁 bug 严重性等级方面的争议,批准合入最新的修改,以及做出取消发布的艰难决定。”

Mozilla 以前通过 IRC 或者电话来发出构建新版本的命令,但他们遇到了问题,后来改成了发送电子邮件给发布流程中涉及的所有人,邮件的标题含有文本“开始构建 + 产品名称 + 版本号”。这封电子邮件包含了即将构建和发布的这个版本的源代码的详细信息,如果代码仓库是基于时间戳的,信息中包括代码对应的时间和时区。

整个发布过程包含以下步骤:

  1. 发布协调人员发出“开始构建”(Go-to-Build)的电子邮件
  2. 开始打标签——像 FIREFOX_30_0_RELEASE 这样的标签被打到大约 85 个代码库中——包括产品、本地化字符串、自动发布用到的代码和工具——这些都是创建一个特定版本的浏览器所需要的。整个过程持续大约 20 分钟,因为代码库实在太多,Mozilla 想并行处理打标签过程,每个库单独一个进程,这样可以把时间缩短到 5 分钟。
  3. 构建开始——许多构建版本协同运行起来,每个发布平台一个,加上刚刚打完标签的所有源代码。编译结果被上传到 ftp.mozilla.org 上。这个步骤还包括了本地化“重新打包”:en-US 区域的版本被解开,然后把所有 en-US 字符串替换成对应区域的字符串,再重新打包。
  4. 签名——二进制文件要签名。对于 Windows 来说,所有的 EXE 和 DLL 都要签名,包括安装程序本身。然后再生成一系列的 MD5 和 SHA1 校验和,这样镜像服务器可以校验它们下载的文件是否正确。签名在一台与外界隔绝的专用服务器上进行。密码、密钥和密钥库只会在发布工程师们私人之间的安全通道内传播。
  5. 测试——对于安全修复版本来说,测试人员会对导致升级版本的安全漏洞进行手动测试。如果问题还在,必须先修复,整个构建流程要重来。
  6. 制作升级包——升级包被制作出来,准备就绪后,浏览器的更新程序会去下载它们。有大量的升级包要做,每个平台、每种语言、基于每个旧版本都要有一个。
  7. QA 测试——一旦签过名的版本准备就绪,社区成员、外包人员和 Mozilla 员工会对它进行手动测试,他们也会测升级包。与此同时,自动化的功能测试流程也会开始。如果一切正常,QA 团队最终会签发这些版本和升级包。
  8. 更新镜像——升级包会被推送到世界各地的镜像服务器上。整个流程完成后,发布协调人员会发送一封电子邮件,宣布新版本准备就绪,这封邮件带有“上线”(Go Live)字样,然后发布工程师们更新网站和 FTP 服务器,确保它们指向最新的版本。

在这套发布流程的演进过程中,Mozilla 也吸取了一些教训:

  • 要成功发布一个版本,在流程中有发言权的相关各方都要考虑到,不管是技术的还是非技术的,这很重要。
  • 使每个人都意识到这个发布流程,以及时间都花哪儿了。一开始,Mozilla 内部人员认为一个新版本的发布仅仅是发布工程师的事,但实际上很多其他人都和这个流程有关,他们都对某些环节负有责任。
  • 发布流程中出现的大多数问题都是这些因素有关,“团队间沟通不畅;缺乏明确的牵头人;以及发布安全修复版本带来的压力、疲劳和焦虑”。“使用简单明了的方式传递信息,消除人为的误解”,这种方法解决了这个问题。
  • 团队稳定性也是个问题:太多的工程师干了一段时间后就离开了发布团队,其他顶替他们的人,也只是晚点走而已。这导致了“缺乏准确且与时俱进的文档,这意味着对发布流程的大多数技术理解仅靠民间口口相传来维护,随便一个人离职后,这种口头经验就遗失了”。在 Mozilla 开始重视发布版本这件事情后,情况就改观了,工程师们开始觉得“Mozilla 有改善现状的计划,团队终于能在一定程度上掌控自己的命运了”。
  • 以小步快跑的方式改进发布流程,每个新版本做得比以前好一点。随着自动化流程的改进,团队也能腾出时间来进一步改进流程。

这几位作者提到,发布流程已经改进到相当不错的程度,Mozill 发布最近 8 个安全修复版本只用了两天时间,这几个版本用于定位 Firefox 用到的一个第三方库中存在的安全漏洞,之前的测试并没有覆盖到这个第三方库。

参考原文链接: http://www.infoq.com/news/2014/07/release-process-mozilla-firefox

2014-07-10 12:361461
用户头像

发布了 77 篇内容, 共 35.3 次阅读, 收获喜欢 25 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试/人工智能|思维导图很难画,ChatGPT来帮你

霍格沃兹测试开发学社

高阶版本来袭!华为云这款轻量应用服务器“战斗力”更强了

轶天下事

极致好用又安全,华为云耀云服务器L实例让中小成长企业永不宕

轶天下事

KaiwuDB 监控组件及辅助 SQL 调优介绍

KaiwuDB

KaiwuDB 监控组件 辅助SQL调优

学python就能找到高薪工作吗?

代码生成器研究

存在争议的低代码,真的能火吗?

代码生成器研究

AI机器学习:突破传统,引领智能科技未来

不在线第一只蜗牛

人工智能 机器学习 AI

你怎么看低代码平台技术?

代码生成器研究

软件测试/人工智能|测试数据很头疼,ChatGPT帮你造

霍格沃兹测试开发学社

更高更强版本来袭!华为云耀云服务器L实例让小程序开发更高效更安全

轶天下事

LED植物生长灯怎么做更有效?聚光和散热不能少!

电子信息发烧客

使用低代码可视化开发平台快速搭建应用

这我可不懂

低代码 可视化 JNPF

爱莫科技 ×英特尔®丨「虚拟店长」轻松提升消费者店消费体验

科技热闻

低代码平台有哪些优势?

代码生成器研究

程序员惶恐?GPTs大火,AI编程不会成为主流?

代码生成器研究

文心一言 VS 讯飞星火 VS chatgpt (139)-- 算法导论11.4 3题

福大大架构师每日一题

福大大架构师每日一题

当AI加上低代码,未来将如何颠覆我们的世界

代码生成器研究

Scrum敏捷开发培训敏捷开发团队必修课

顿顿顿

scrum敏捷工具 scrum培训 敏捷开发培训 敏捷研发管理工具 scrum研发工具

软件测试/人工智能|如何利用ChatGPT帮助我们编写测试用例

霍格沃兹测试开发学社

翻过电商独立网站“三座大山”,华为云助力企业勇攀高峰

轶天下事

搭建小程序快人一步!轻量应用服务器还得是华为云

轶天下事

镭速,克服UDP传输缺点的百倍提速传输软件工具

镭速

文件传输工具 大文件传输工具 UDP传输

上海站 | RocketMQ Meetup 重磅来袭

Apache RocketMQ

开源 消息中间件 微服务、 消息列队

Databend 开源周报第 120 期

Databend

关于代码混淆,看这篇就够了

雪奈椰子

轻量应用服务器首选华为云,为何说是中小企业的最佳选择?

轶天下事

打破质疑!华为云这款轻量应用服务器让小程序降本增效

轶天下事

低代码的能力边界在哪?

代码生成器研究

【网络通信】浅析UDP与TCP协议的奥秘

EquatorCoco

TCP 网络协议 UDP协议

百度爬虫的工作原理解析

快乐非自愿限量之名

百度 爬虫 爬虫分享

低代码需要什么配置的电脑?

代码生成器研究

Mozilla发布Firefox的流程_Mozilla_Abel Avram_InfoQ精选文章