Mozilla 構建系統

發布時間: 2011-05-14 10:05  閱讀: 852 次  推薦: 0   原文鏈接   [收藏]  

  英文來源: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 盒子壘成的,它被放在發布工程師在山景城的辦公室里。

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()