CI 功能

以下是大多數 CI 系統中提供的功能。

環境

選擇並瞭解系統執行工作流程的硬體和軟體環境是非常重要的。Android 應用程式的重要注意事項如下:

  • 平台:Linux、Mac、Windows 及其版本。
  • 可用記憶體:建構應用程式和執行模擬器可能會耗用大量 RAM。因此,通常需要調整 JVM 堆積大小等參數,以免發生記憶體不足的錯誤。
  • 預先安裝的軟體:持續整合系統通常會為映像檔提供一系列現成可用的工具,例如 Java Development Kit (JDK)、Android 軟體開發套件 (SDK)、建構工具、平台和模擬器。
  • Runner 架構和指令集:ARM、x86。使用模擬器時,這一點非常重要。
  • 環境變數:有些是由持續整合系統設定 (例如 ANDROID_HOME),您可以自行設定,例如避免在工作流程中以硬式編碼的方式編寫憑證。

您還應考量許多其他層面,例如可用的核心數量,以及是否啟用虛擬化來執行模擬器。

記錄和報告

如果步驟失敗,持續整合系統會通知您,而且通常不會讓您合併變更。如要找出發生錯誤的原因,請查看記錄中尋找錯誤。

此外,建構和測試會產生報表,通常儲存為該特定版本的構件。視 CI 系統而定,您可以使用外掛程式以視覺化方式呈現這些報表的結果。

快取和 CI 執行時間

持續整合系統會使用建構快取加快程序,最簡單的做法是,在成功建構後儲存所有 Gradle 快取檔案,並在建構新的檔案前還原這些檔案。需要使用 Gradle 的建構快取功能,您應該在專案中啟用。

以下是改善執行時間和可靠性的方法:

  • 模組:偵測哪些模組會受到變更影響,只建構及測試這些模組。
  • 略過快取:如果版本含有開發人員已修改的指令碼,請忽略建構快取。您可以放心從頭開始建立,
  • 資料分割測試:尤其是檢測設備測試,對於跨多部裝置進行資料分割測試,可協助進行資料分割測試。Android 執行器、Gradle 管理的裝置和 Firebase Test Lab 支援這項功能。
  • 資料分割建構:您可以針對多個伺服器執行個體分割版本。
  • 遠端快取:您也可以使用 Gradle 的遠端快取

重新執行失敗的測試

起伏是指測試或工具間歇性失敗的測試。您應一律嘗試找出並修正會產生不穩定建構和測試的問題,但其中有些問題很難重現,尤其是執行檢測設備測試時。常見的策略是,在測試失敗時隨時重試,最多可重試次數。

由於重試可能橫跨多個層級,因此您無法以單一方式設定重試。下表概略說明出現不穩定測試失敗時可採取的行動:

失敗

操作

模擬器未在幾秒內無回應,觸發逾時

重新執行失敗的測試

模擬器無法啟動

重新執行整個工作

程式碼結帳階段發生連線錯誤

重新啟動工作流程

請務必記錄及追蹤系統的哪些部分不穩定,並且投資確保 CI 保持可靠和快速,僅依賴重試