Mozilla發布Firefox的流程
這篇文章展示了 Mozilla 發布他們的瀏覽器所用的流程
從 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 或者電話來發出構建新版本的命令,但他們遇到了問題,后來改成了發送電子郵件給發布流程中涉及的所有人,郵件的標題含有文本“開始構建+產品名稱+版本 號”。這封電子郵件包含了即將構建和發布的這個版本的源代碼的詳細信息,如果代碼倉庫是基于時間戳的,信息中包括代碼對應的時間和時區。
整個發布過程包含以下步驟:
發布協調人員發出“開始構建”(Go-to-Build)的電子郵件
</li>開始打標簽——像 FIREFOX_30_0_RELEASE 這樣的標簽被打到大約 85 個代碼庫中——包括產品、本地化字符串、自動發布用到的代碼和工具——這些都是創建一個特定版本的瀏覽器所需要的。整個過程持續大約 20 分鐘,因為代碼庫實在太多,Mozilla 想并行處理打標簽過程,每個庫單獨一個進程,這樣可以把時間縮短到 5 分鐘。
</li>- 構建開始——許多構建版本協同運行起來,每個發布平臺一個,加上剛剛打完標簽的所有源代碼。編譯結果被上傳到ftp.mozilla.org 上。這個步驟還包括了本地化“重新打包”:en-US 區域的版本被解開,然后把所有 en-US 字符串替換成對應區域的字符串,再重新打包。
- 簽名——二進制文件要簽名。對于 Windows 來說,所有的 EXE 和 DLL 都要簽名,包括安裝程序本身。然后再生成一系列的 MD5 和 SHA1 校驗和,這樣鏡像服務器可以校驗它們下載的文件是否正確。簽名在一臺與外界隔絕的專用服務器上進行。密碼、密鑰和密鑰庫只會在發布工程師們私人之間的安全 通道內傳播。
- 測試——對于安全修復版本來說,測試人員會對導致升級版本的安全漏洞進行手動測試。如果問題還在,必須先修復,整個構建流程要重來。
- 制作升級包——升級包被制作出來,準備就緒后,瀏覽器的更新程序會去下載它們。有大量的升級包要做,每個平臺、每種語言、基于每個舊版本都要有一個。
- QA 測試——一旦簽過名的版本準備就緒,社區成員、外包人員和 Mozilla 員工會對它進行手動測試,他們也會測升級包。與此同時,自動化的功能測試流程也會開始。如果一切正常,QA 團隊最終會簽發這些版本和升級包。
- 更新鏡像——升級包會被推送到世界各地的鏡像服務器上。整個流程完成后,發布協調人員會發送一封電子郵件,宣布新版本準備就緒,這封郵件帶有“上線”(Go Live)字樣,然后發布工程師們更新網站和 FTP 服務器,確保它們指向最新的版本。
</ol> </blockquote>在這套發布流程的演進過程中,Mozilla 也吸取了一些教訓:
- 要成功發布一個版本,在流程中有發言權的相關各方都要考慮到,不管是技術的還是非技術的,這很重要。
- 使每個人都意識到這個發布流程,以及時間都花哪兒了。一開始,Mozilla 內部人員認為一個新版本的發布僅僅是發布工程師的事,但實際上很多其他人都和這個流程有關,他們都對某些環節負有責任。
- 發布流程中出現的大多數問題都是這些因素有關,“團隊間溝通不暢;缺乏明確的牽頭人;以及發布安全修復版本帶來的壓力、疲勞和焦慮”。“使用簡單明了的方式傳遞信息,消除人為的誤解”,這種方法解決了這個問題。
- 團隊穩定性也是個問題:太多的工程師干了一段時間后就離開了發布團隊,其他頂替他們的人,也只是晚點走而已。這導致了“缺乏準確且與時俱進的文 檔,這意味著對發布流程的大多數技術理解僅靠民間口口相傳來維護,隨便一個人離職后,這種口頭經驗就遺失了”。在 Mozilla 開始重視發布版本這件事情后,情況就改觀了,工程師們開始覺得“Mozilla 有改善現狀的計劃,團隊終于能在一定程度上掌控自己的命運了”。
- 以小步快跑的方式改進發布流程,每個新版本做得比以前好一點。隨著自動化流程的改進,團隊也能騰出時間來進一步改進流程。
</ul> </blockquote>這幾位作者提到,發布流程已經改進到相當不錯的程度,Mozill 發布最近 8 個安全修復版本只用了兩天時間,這幾個版本用于定位 Firefox 用到的一個第三方庫中存在的安全漏洞,之前的測試并沒有覆蓋到這個第三方庫。
來自: InfoQ<span id="shareA4" class="fl"> </span>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!