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

語言: 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),更多幹貨實踐,歡迎交流分享~