Codemagic CICD 幫忙添加 Tag 到 Organization Repo

Yii Chen
Flutter Formosa
Published in
6 min readJun 1, 2023

現在有蠻多公司都會使用 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 SettingFine-grained personal access tokens。爲 Codemagic 創建新的 Token
  • 可以自由給予名稱、到期時間、描述
  • 最重要的兩點,我們將 Token 的使用限制於特定專案,並給予 Contents 的讀寫權限,因為要幫 Repo 設置 Tag

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

// Example
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0

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_URIGITHUB_ORGANIZATION_NAMEGITHUB_ACCESS_TOKEN 三個變數的內容沒問題

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

完成

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

Codemagic Build
Git

Articles

About

Contribution

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

https://www.buymeacoffee.com/yiichenhi

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

--

--

Yii Chen
Flutter Formosa

Flutter Lover || Organizer FlutterTaipei || Writer, Speaker || wanna make Flutter strong in Taiwan. https://linktr.ee/yiichenhi