使用 GitHub Actions 和 Codemagic CLI 自動化 Flutter iOS 應用部署


摘要

本文介紹如何使用 GitHub Actions 和 Codemagic CLI 自動化 Flutter iOS 應用的部署過程,特別適合開發團隊提升效率和安全性。 歸納要點:

  • 深入探討 Codemagic CLI 的高效參數設定,提供針對大型 Flutter 專案的最佳化建議,包括快取機制與環境變數管理。
  • 詳細說明如何在 GitHub Actions 中整合 Codemagic CLI,並建立健全的錯誤處理機制,以確保應用程式的穩定部署。
  • 比較 Codemagic 與 Fastlane 在自動化部署中的優缺點,並展示具體範例以強化實際應用效果。
透過這篇文章,你將掌握自動化部署的核心技術與最佳實踐,從而有效提升你的 Flutter 專案開發流程。


Flutter iOS 自動化部署:使用 GitHub Actions 與 Codemagic CLI 的完整指南

在本教程中,我們將使用 GitHub Actions 為 Flutter iOS 應用程式設定自動化部署流程。您將學習如何建立一個工作流程,執行 Codemagic CLI 工具來構建您的應用並上傳到 TestFlight。完成後,您將擁有一個高效的應用分發管道,節省時間和精力,使您能更多地專注於開發,而非手動部署。

Codemagic CLI 工具是一組免費、開源的命令列工具,支援 Codemagic 的 CI/CD 服務。當我第一次嘗試為我的 iOS 應用設定自動部署時,我遇到了幾次令人沮喪且難以解決的管道故障。正是在這時,我發現了 Codemagic CLI —— 它不需要配置,大大簡化了整個構建自動化過程。從那以後,我一直愉快地使用它!😅

我們是我們反覆所做之事。因此,卓越不是一種行為,而是一種習慣。立即嘗試 Justly,開始建立您的習慣吧!

**深入探討 Codemagic CLI 在處理 iOS 簽署憑證與配置檔案方面的細節與最佳實踐:**許多 Flutter 開發者在使用 GitHub Actions 搭配 Codemagic CLI 部署iOS應用程式時,最常遇到的問題就是簽署憑證和配置檔案的管理。本教程雖然提及簡化了流程,但對於專家而言,了解其背後的機制至關重要。具體來說,我們需要深入研究如何透過 GitHub Secrets 安全地儲存並管理這些敏感資訊,以避免直接硬編碼在指令碼中,同時探討如何自動更新過期的憑證和配置檔案,包括詳細說明如何使用 Codemagic CLI 的特定引數來指定這些檔案的路徑及相關設定,以及如何處理不同開發階段(例如開發、測試、生產)的不同憑證和配置檔案。更進階的議題如使用 Apple 的 App Store Connect API 進行自動化版本管理及上架流程,也值得探討,以讓整個部署流程更為完善,避免人工幹預並提升效率。

最後針對可能出現的錯誤訊息提供更精確的除錯方法,例如針對不同錯誤程式碼的詳細說明及解決方案將有助於專家快速定位並解決問題。使用者典型查詢意圖包含:「Codemagic CLI iOS signing」、「GitHub Actions iOS code signing」、「自動更新 iOS provisioning profile」、「處理Codemagic CLI iOS 部署錯誤」。

**結合最新趨勢:探索 Codemagic CLI 與 Flutter 3.x 及更新版本的相容性與最佳化策略,以及與其他 CI/CD 工具整合的可能性:**Flutter 持續更新,新版本可能帶來新的功能和 API 變動,影響到 CI/CD 流程。因此,本教程需加入對於 Codemagic CLI 與 Flutter 3.x 及未來版本相容性的評估與最佳化建議,包括探討如何利用 Flutter 3.x 的新功能(例如改進效能、新 UI 元件等)來最佳化構建流程,以及如何應對可能出現的相容性問題。Codemagic CLI 不侷限於 GitHub Actions,也可以與其他 CI/CD 平台(例如 GitLab CI、CircleCI 等)整合。本教程可以進一步探討這些整合策略,比較不同平台之間各自優缺點,使專家根據自身需求選擇最適合的平台方案。

在安全性方面,討論如何將 Codemagic CLI 與安全掃描工具整合,以確保應用程式安全符合最新標準並降低安全風險,也是使用者典型查詢意圖中隱含需求,例如:「Codemagic CLI GitLab CI」、「Codemagic CLI 安全性」、「Flutter CI/CD 最佳實踐」、「Flutter 安全性測試」等關鍵字搜尋。

Flutter App 上架 App Store:從 GitHub Actions 自動化部署

在開始之前,請確保您擁有以下條件:一個已加入 Apple 開發者計畫的 App Store 帳戶;一個準備好部署的 Flutter 應用程式;以及為您的專案設定好的 GitHub 儲存庫。

在這篇教程中,我將以 Flutter 計數器應用程式作為範例。為了簡化過程,我將文章分成三個部分:基本工作流程設定、在 App Store Connect 中進行設定、增加釋出作業。

現在,讓我們一起走過每一步驟!準備好了嗎?我們開始吧!🚀

在這一部分,我們將新增基本的 GitHub 工作流程設定。導航至您的專案根目錄。如果您尚未建立,請建立一個名為 .github/workflows 的新目錄。在此目錄中,建立一個新的 YAML 檔案(例如:ios.yml)。


在新建立的 YAML 檔案中,首先定義工作流程觸發器。

name: Push iOS build on TestFlight  on:   push:     branches:       - main

name: 這是工作流程的名稱。它將顯示在您 GitHub 儲存庫的動作標籤下。 on: 這定義了觸發工作流程的事件。在此情況下,當程式碼推送到主分支時(例如,當子分支合併到主分支時),工作流程將自動觸發。根據您的工作流程需求,還有其他事件可以用作觸發器,例如拉取請求、標籤或基於計劃的觸發。

jobs:   ios_deployment:     runs-on: macos-latest

工作流程由一個或多個任務組成。每個任務在特定的環境中執行,這個環境由 runs-on 屬性指定。在這種情況下,我們使用的是 macOS 環境(macos-13),這對於構建 iOS 應用程式至關重要。

   steps:       - name: Checkout Repo         uses: actions/checkout@v4

檢出:此操作會將您的儲存庫檢出到 ¥GITHUB_WORKSPACE,讓您的工作流程能夠訪問儲存庫中的程式碼和資源。

- name: Set up Flutter SDK   uses: flutter-actions/setup-flutter@v3   with:     channel: stable     version: 3.24.0

設定 Flutter SDK:這一步驟用於在 GitHub Actions 中配置 Flutter 環境。請確保指定的版本與您的 pubspec.yaml 檔案中的版本相容。預設情況下,此操作會使用最新版本,但您可以根據需要指定其他版本。

- name: Install dependencies & Lint check   run: |     flutter clean     flutter pub get     flutter analyze --fatal-infos

安裝依賴和靜態檢查:在這一步中,我們執行 `flutter pub get` 來安裝專案所需的所有依賴。接著,我們使用 `dart analyze --fatal-infos` 進行靜態檢查,這個步驟是可選的;如果您不希望對程式碼進行靜態分析,可以選擇跳過。當您將這個工作流程檔案推送到主分支後,您將在 GitHub 倉庫的 Actions 標籤中看到一個構建排隊的狀態。


在我們繼續之前,我們需要在 App Store Connect 中設定您的應用程式。如果您已經完成這一步,可以跳過這個步驟。讓我們一起來看看如何操作。👇如果您還沒有相關設定,可以參考此指南。

如果您已經擁有釋出證書,則可以跳過此步驟。前往 Identifiers 並建立一個新的 ID。這個捆綁 ID 是在 App Store 中建立應用程式所必需的。


選擇應用程式 ID 並繼續。選擇要註冊的應用程式。提供描述、包裝 ID,並檢查您在應用程式中需要的功能。


點選繼續,現在您將擁有一個新的應用程式識別碼。配置描述檔與釋出證書相關聯,並識別一個團隊或組織。此描述檔授權您的應用在裝置上執行,而無需使用 Xcode。請前往配置檔部分,然後點選 + 號以建立新的配置描述檔。在釋出下選擇 App Store Connect,然後點選繼續。選擇您之前建立的應用 ID,然後點選繼續。


選擇用於配置檔的釋出證書,然後點選「繼續」。接著輸入配置檔名稱,並再次點選「繼續」。


下載配置檔。前往應用程式並建立一個新應用,填寫表單中的必要資訊,然後點選建立。


恭喜你!你已成功建立了一個新的應用程式。根據 Codemagic 指南,為了使 Codemagic CLI 工具能夠上傳和獲取來自 App Store Connect 的資料,你需要生成一個具有應用管理員訪問許可權的 App Store Connect API 金鑰。請登入 App Store Connect,然後導航至「使用者與存取」>「整合」。點選 + 按鈕以生成一個新的 API 金鑰。為該金鑰提供一個名稱,並選擇應用管理員的訪問級別。


生成金鑰後,它會列在活躍的金鑰列表中。點選下載 API 金鑰以儲存私密金鑰,以便日後使用。

注意:該金鑰只能下載一次,因此請務必將其存放在安全的位置。


請儲存這個發行者 ID、金鑰 ID 和 API 金鑰,因為我們稍後會用到它們。接著下載您在步驟 5 中建立的釋出證書。


找到已下載的證書並使用「鑰匙串存取」開啟它。接下來,將證書匯出,以建立一個擁有 .p12 副檔名的檔案。您可以將此檔案儲存在下載資料夾或任何您喜歡的目錄中。


當您點選下載時,系統會提示您為證書設定密碼。此密碼將在訪問證書時需要使用,因此請務必記住它。您需要將其作為變數新增到您的工作流程中。


現在我們已經完成了 App Store Connect 的所有基本設定,接下來是配置 GitHub Actions 的環境變數的時候了。這篇部落格文章最初發表於 canopas.com。

要閱讀完整版本,請訪問這個部落格。如果你喜歡所讀到的內容,不妨在下面給我一些鼓勵 👏 👏 👏 - 作為一名作者,這對我來說意義重大!我鼓勵你在評論區分享你的想法。你的反饋不僅豐富了我們的內容,也激勵著我們創作出更多有價值且資訊豐富的文章供你參考。關注 Canopas,以獲取有趣文章的最新訊息!


AP

專家

相關討論

❖ 相關專欄