轉轉客户端持續交付—魯班的構建管理

語言: CN / TW / HK

背景 隨着業務的發展,轉轉除了轉轉APP外,開發了越來越多的獨立APP去滿足業務;作為轉轉最早的客户端團隊,除了滿足自身業務需求外,也需要提供公司級通用的APP持續交付基礎能力。可快速擴展到其他APP使用,提高整體工作質量和效率。魯班在持續交付的整體流程中,主要承擔:APP版本流程、包構建、APP專項測試等能力。

魯班的構建管理

APP的持續交付儘可能的將整體項目流程串了起來。開發階段的代碼分支由beetle進行管理,詳見文檔《轉轉客户端持續集成--分支管理

本次主要給大家分享魯班的包構建管理相關能力。

開發測試階段,包構建頻次非常高,整個階段經歷:提測-測試-修復-測試的一個反覆過程,構建管理提供了這個環節的基礎能力,需要提供穩靠,儘可能自動化,減少人工重複消耗的能力。

圖片

結合背景和我們的目標需求,在設計魯班的構建管理模塊時,主要包含了以下幾個點:

1、通用性,可擴展

構建能力不僅僅是給轉轉APP,需要可快速擴展到公司其他APP;並支持各業務自定義自己的打包腳本。

構建腳本將通用配置和腳本內容提供公共打包模板,提供可視化的操作,方便用户操作。滿足基礎的構建要求。

圖片

除了公共構建參數外,又提供了自定義的擴展參數,便於各業務在基礎構建腳本外擴展自己的業務邏輯。

圖片

2、構建參數模板化

魯班支持將不同參數組成一個個構建模板,方便構建人員根據不同的場景打出不同用途的包。

除了提供的基礎測試包、發版包外,支持各業務根據自己的需求定製個性化的構建模板。模板可以簡化構建填寫內容,有效避免人為填寫出錯等情況。

圖片

通過模板,可減少用户操作,只填寫可變的部分,避免一些關鍵信息填寫錯誤的問題出現。

圖片

3、觸發構建機制

目前觸發機制有兩種:自動觸發或手動觸發

  • 自動觸發:開發提交tag自動觸發,減少人的介入
  • 手動觸發:包括開發在beetle上觸發編譯操作或在魯班平台上手動構建需要的包

beetle上編譯觸發:和整體開發流程結合,只構建有效版本,避免一些不必要的tag過多佔用構建資源

魯班平台構建:適用需要特殊場景的包,手動創建

兩種方式,滿足了各業務的不同的場景需求,根據自身業務特性去選擇觸發方式。

4、構建結果數據存儲

包含構建歷史和打包結果的存儲。分別記錄構建信息和打包結果的信息,結果可查詢,另外會存儲包大小等信息,可生成報表查看階段包大小變化等。

圖片

構建結果存儲為二維碼,方便用户掃碼安裝。

圖片

5、串聯發版能力

當選擇發版模板時,會觸發android和ios的發版功能,自動完成發版操作

圖片

發版的同時保存版本數據結果,記錄版本歷史節點,便於後續版本追溯。

其他

構建管理還關聯了APP的一些自動化、檢查項等配置。例如靜態代碼掃描,冒煙,UIcase等,本次就不詳細介紹了。

後續靜態代碼掃描等基礎能力進一步完善後,會設定指標對整體APP的流程做一個控制,對APP的交付有一個准入準出規範標準。 

大致流程如下:

圖片

以上為轉轉客户端,魯班提供的構建相關能力,歡迎大家交流討論~

作者:孫敏

轉轉研發中心及業界小夥伴們的技術學習交流平台,定期分享一線的實戰經驗及業界前沿的技術話題。

關注公眾號「轉轉技術」(綜合性)、「大轉轉FE」(專注於FE)、「轉轉QA」(專注於QA),更多幹貨實踐,歡迎交流分享~