Mozilla 构建系统(转)
英文來源:Mozilla’s Build System
中文出處:開放博客,由灰狐翻譯小組制作
Mozilla 構建系統(tǒng)是一個非常酷的分布式系統(tǒng),運行在BuildBot上。系統(tǒng)能在每次修改后自動重新構建和測試代碼樹。
目前,整個構建基礎設施使用了大約 1,000 臺機器并分組在3個?pools?池中,每個 pool 都有數(shù)臺Build Masters?和很多臺?Slaves?組成:
構建池(Build Pool) 處理所有更改觸發(fā)的構建,除了那些要去試驗的構建:
- 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 倉庫里尋找新的更改。這些更改通過構建調(diào)度者(Build Scheduler Master) 獲得,并創(chuàng)建構建請求(Build Requests),為每一個支持的平臺都創(chuàng)建一個。這些構建請求以待定的方式進入調(diào)度數(shù)據(jù)庫。Build Masters 尋找待定的構建請求然后當有空閑Slaves就分配給它們。
為構建完整,Build Master 將狀態(tài)更新到調(diào)度數(shù)據(jù)庫中。另外,測試調(diào)度者(Test Scheduler Master) 為相應的測試創(chuàng)建測試構建請求。
接著,測試構建請求由 Test Masters 獲得并分配給空閑的 Slaves。當測試完成,Test Master 更新它們的狀態(tài)到調(diào)度數(shù)據(jù)庫中。
每個 Build Master 和 Test Master 控制它們自己的一組 Slaves。
構建運行生命周期
每個推向 mozilla-central 的請求,如果成功的話,會生成總數(shù)為 168 ?個構建請求(截至2010年10月,但在未來會有所變化),其中 10 個構建(支持10種平臺),108個單元測試和50個 talos tests。所有這些構建請求組成一個 Build Run。
10種平臺的構建都需要有一套自己的測試請求。僅當相應的構建成功完成這些測試才被創(chuàng)建。這就意味著如果構建失敗,這些測試將不被創(chuàng)建,Build Run 也不會有168個構建請求,
Build Run 生命周期中有兩個非常重要的測量:等待時間(Wait Time) 和 端對端時間(End to End Time)。
等待時間測量在隊列中的構建請求在開始執(zhí)行前要等待多長時間,更具體的講,它測量生成構建請求改變的時間戳和構建請求賦予空閑 Slave 的時間戳之前的時間差。(見上面 Build Run 的生命周期圖)
端對端時間測量一個 Build Run 完成需要多長時間。也就是說,觸發(fā)這個 Build Run ?改變的時間戳和最終生成構建請求的時間戳之間的時間差(換句話說,就是當所有的構建和測試完成)。(見上面 Build Run 生命周期圖)
正常情況下 mozilla-central 的端對端時間會少于4小時,但是隨著系統(tǒng)負載的增加時間會有所延長。
Mac minis 壘的墻
構建是在一個虛擬機組合之上完成的,包含 1U 服務器,xserves 和 Mac minis,并且所有的測試都是在 Mac Minis 上完成的。
這堵 mac minis 墻是由 400 個 Mac minis 盒子壘成的,它被放在發(fā)布工程師在山景城的辦公室里。
http://kb.cnblogs.com/page/100944/
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Mozilla 构建系统(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软Exchange Server 20
- 下一篇: 基于订阅的服务通讯架构体系