AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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:361763
用户头像

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

关注

评论

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

让数据流动起来,RocketMQ Connect 技术架构解析

阿里巴巴云原生

阿里云 RocketMQ 云原生

软件测试面试真题 | UI自动化测试如何通过子元素定位父元素?

测试人

软件测试 面试题 自动化测试

云栖盘点 | 一文 get 云原生峰会的最全发布

云布道师

云原生 云栖大会

HarmonyOS 3开启新一轮升级,3年前的nova 6也能更新!

极客天地

Go语言入门16—锁

良猿

Go golang 后端 11月月更

params传参与body传参区别

源字节1号

软件开发 前端开发 后端开发 小程序开发

docker如何在容器外执行容器内命令

A-刘晨阳

Docker Linux 运维 11月月更

干货|分析PostgreSql单表60w数据却占用55g空间

查拉图斯特拉说

数据库 postgresql db 11月月更

DAO社区治理代币投票挖矿系统开发合约定制

开发微hkkf5566

技术指南 | 如何集成Perforce版本控制系统Helix Core (P4V) 与软件生命周期管理工具Helix ALM

龙智—DevSecOps解决方案

版本控制 软件开发生命周期 版本管理 ALM

【LeetCode】只出现一次的数字Java题解

Albert

算法 LeetCode 11月月更

技术内幕 | StarRocks 支持 Apache Hudi 原理解析

StarRocks

#数据库

用javascript分类刷leetcode3.动态规划(图文视频讲解)

Geek_07a724

JavaScript LeetCode

HarmonyOS线上Codelabs系列挑战赛第二期:调用三方库,制作酷炫的视觉效果

HarmonyOS开发者

HarmonyOS

JavaScript刷LeetCode拿offer-栈相关题目

js2030code

JavaScript LeetCode

JavaScript刷LeetCode心得

js2030code

JavaScript LeetCode

​GOPS演讲 | 如何构建现代运营与支持体系,实现团队的高效协同

龙智—DevSecOps解决方案

gops ITSM ITSM解决方案 GOPS全球运维大会

JavaScript刷LeetCode拿offer-js版字典

Geek_07a724

JavaScript LeetCode

用Vue.js开发企业管理后台,我做到了

博文视点Broadview

你知道IPC二级和IPC三级有什么区别吗?两者对PCB产品的影响又是什么呢?

华秋PCB

PCB ipc PCB设计

TDSQL携手金蝶云·苍穹,发布“国产数据库联合解决方案”

腾讯云数据库

数据库 腾讯云 tdsql 金蝶 腾讯云数据库

前端安全问题及防护思路

FinFish

网络安全 安全 安全架构 移动安全 前端安全

云栖盘点:2022 云网络产业干货分享

云布道师

云网络 云栖大会

JavaScript刷LeetCode-字符串类解题技巧

Geek_07a724

JavaScript LeetCode

堡垒机小知识科普-行云管家

行云管家

网络安全 信息安全 堡垒机 等保2.0

新双机热备软件排名看这里!

行云管家

高可用 双机热备

成为web前端工程师培训和自学选择

小谷哥

安装户外LED显示屏安装注意事项

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

linux(centos)中部署docker(步骤超全,含带一些发展史和一些概念)

A-刘晨阳

Docker Linux 运维 11月月更

AR Engine光照估计能力,让虚拟物体在现实世界更具真实感

HarmonyOS SDK

AR HMS Core

开源代码安全 | 西门子为保护代码安全采取了什么措施?

龙智—DevSecOps解决方案

SCA SCA工具 开源代码安全

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