yii.
← Writing
Flutter 技術 · · 4 min read

Codemagic CICD 幫忙添加 Tag 到 Organization Repo

這篇寫於 2023 年。工具和 API 變化很快,部分步驟可能已經不適用。

現在有蠻多公司都會使用 Codemagic 這套服務來完成 APP CICD,尤其他們專為 Flutter 設計,在網頁的操作上非常簡單清楚,提供視覺化介面以及 yaml 編輯檔設置兩種方式。每個月 500 分鐘的使用額度也給得足夠,很多新創公司都會首選 Codemagic 來處理 CICD。

本文要說明如何在 CICD 過程中給予 Organization Repository 一個版本 Tag(如果你是將 Repo 放在個人帳戶裡實作上差不多),方便我們後續追蹤每個版本的程式碼,在 Testflight 與 Android Test 上也能有區別。

趕快跟著我來實作吧!


GitHub Organization 設定#

  1. 開啟 Personal access tokens → Setting
  2. 將 Fine-grained personal access tokens 設為 Allow access via fine-grained personal access tokens
  3. 儲存

GitHub 個人帳戶設定#

  • 確定已經加入組織後,開啟 Developer Setting → Fine-grained personal access tokens。爲 Codemagic 創建新的 Token
  • 可以自由給予名稱、到期時間、描述
  • 最重要的兩點,我們將 Token 的使用限制於特定專案,並給予 Contents 的讀寫權限,因為要幫 Repo 設置 Tag

完成儲存後會得到一組金鑰,它只會出現這一次,需要將它記錄下來,避免遺失

// Example
github_pat_xxxxxxxxxxxxxxxx

Codemagic 設定#

將準備好的 Access Token 設定到 Environment variables,方便我們的 CICD Pipeline 存取。記得勾選 Secure,才不會暴露出來讓大家看到。需要設置三個環境變數,方便後面流程拿來使用,盡量避免寫死在程式碼和命令裡面

  1. GITHUB_REPOSITORY_URI
  2. GITHUB_ORGANIZATION_NAME
  3. GITHUB_ACCESS_TOKEN

接著打開 Distribution 前的設置,我們要針對 Pre-publish script 做一些改變,目的在部署出去前先更新 Git,將新的版本標籤推上去

根據官方範例,可以直接將這段拿過來使用。其中會先判斷前面的 Build 狀態是否為成功,失敗的話就不標記和部署了。

  • $BUILD_NUMBER 為 Codemagic 內建變數,代表這個 Build 的新號碼,每次+1
  • 記得確保 GITHUB_REPOSITORY_URI、GITHUB_ORGANIZATION_NAME 和 GITHUB_ACCESS_TOKEN 三個變數的內容沒問題

也可以先在本地測試是否能成功 push 到 Github

完成#

執行 build 之後可以看到 Pre-publish script 環節,會有 Git 操作過程,這時候 Repo 就會有新的 tag 囉,方便我們後續追蹤版本。

Codemagic Build
Codemagic Build
Git
Git

Articles#

About#

Contribution#

如果覺得文章不錯的話可以贊助,讓我有更多動力和熱情分享學習紀錄和生活!請我喝一杯咖啡吧~

https://www.buymeacoffee.com/yiichenhi

希望有幫助到你/妳,歡迎追蹤我,方便瀏覽最新的文章~

本文原刊登於 Medium。