Just My Life & My Work

[Flutter] iOS CICD 流程

原本 App Team 包含我僅有兩位開發者,我負責領導開發忙得不可開交。去年 Q4,親自招募兩位新人進駐,我終於可以有空閒時間做 Flutter App 的 CICD。🙂

2019 年在港商工作時,已有建置 iOS CICD 流程經驗,所以首選 Jenkins 來作為持續整合工具,節省研究時間,稍微比較其他工具後,認為 Jenkins 相關套件外掛多,未來有需有可以擴充。另因 Jenkins 有直覺的操作介面,使得無論是工程人員或是團隊其他成員,都能迅速上手。

註:

  • CI(Continuous Integration,持續整合)
  • CD(Continuous Delivery / Continuous Deployment,持續交付 / 持續部署)

簡單比喻

  • CI:像是每次寫完一小段文章就馬上拼到全文裡,再跑拼字檢查。
  • CD:檢查通過後,自動把這篇文章印刷出版(交付)或直接送到讀者家(部署)。

我將 Shell Scrip 流程圖解如下:

.

接著使用時序圖(Sequence Diagram)呈現 Jenkins 與工具間的互動(如 xcodebuild、altool):

.

以上是最精簡關鍵的流程步驟。

進一步改進版本:

  1. 每個環境獨立處理流程
  2. 上傳失敗的錯誤回應與重試機制
  3. Slack 通知成功或失敗結果
  4. 所有環境完成後的總結通知
  5. Git 推送版本觸發 Jenkins 任務
  6. 在打包後記錄 IPA 檔案大小
  7. 計算並上報打包與上傳耗時
  8. 在 Slack 通知中加入檔案大小與時間資訊
  9. TestFlight 測試人員回饋回傳

    .

    若以更宏觀角度來看每個環境陸續進行:

    .

    當然流程項目還可以再進行優化,端視專案需求到何種境界。

    當前我們有四個環境,但也不是一次就要打包四個環境的 App 來做測試,若每次小增修就要跑整個 CICD 流程,肯定會耗費大量時間。比如進行 DEV App 測試就遇到A功能有問題,之後的 UAT/PT/Production App 就根本不用測試A功能,這些已打包部署好的版本就是浪費掉。

    於是想要全部流程自動化,那是專案在非常理想的狀態下才可行。在我們的專案中,還是需要些許手動設定調整,來打包部署所需要的版本。🙃

    人生也是一連串持續整合、交付、部署的過程。

    隨意留個言吧:)~

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

    標籤雲