Codemagic CICD 幫忙添加 Tag 到 Organization Repo
現在有蠻多公司都會使用 Codemagic 這套服務來完成 APP CICD,尤其他們專為 Flutter 設計,在網頁的操作上非常簡單清楚,提供視覺化介面以及 yaml
編輯檔設置兩種方式。每個月 500 分鐘的使用額度也給得足夠,很多新創公司都會首選 Codemagic 來處理 CICD。
本文要說明如何在 CICD 過程中給予 Organization Repository 一個版本 Tag(如果你是將 Repo 放在個人帳戶裡實作上差不多),方便我們後續追蹤每個版本的程式碼,在 Testflight 與 Android Test 上也能有區別。
趕快跟著我來實作吧!
GitHub Organization 設定
- 開啟 Personal access tokens → Setting
- 將 Fine-grained personal access tokens 設為 Allow access via fine-grained personal access tokens
- 儲存
GitHub 個人帳戶設定
- 確定已經加入組織後,開啟 Developer Setting → Fine-grained personal access tokens。爲 Codemagic 創建新的 Token
- 可以自由給予名稱、到期時間、描述
- 最重要的兩點,我們將 Token 的使用限制於特定專案,並給予 Contents 的讀寫權限,因為要幫 Repo 設置 Tag
完成儲存後會得到一組金鑰,它只會出現這一次,需要將它記錄下來,避免遺失
// Example
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0
Codemagic 設定
將準備好的 Access Token 設定到 Environment variables,方便我們的 CICD Pipeline 存取。記得勾選 Secure
,才不會暴露出來讓大家看到。需要設置三個環境變數,方便後面流程拿來使用,盡量避免寫死在程式碼和命令裡面
- GITHUB_REPOSITORY_URI
- GITHUB_ORGANIZATION_NAME
- 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 囉,方便我們後續追蹤版本。
Articles
- Flutter Meetup #1 聚會有什麼?還有 Flutter 四月大小事!
- 提升開發效率的好物,Mason 讓你輕鬆撰寫自定義模板!
- 教你製作強大的 Rive 動畫,完成一隻 Flutter Dash,在 APP 跟它互動!
- Flutter 如何根據 Flavor 多環境載入對應的 Firebase Config
- Isolates 在 Flutter 3.7 & Dart 2.19 的升級,你該知道一下!
- 讓人驚艷的 Flutter Forward,釋出 Flutter 3.7 和 Dart 2.19
- 學會運用 Flutter Widgetbook,該管好自己和公司的元件庫了!
- 剛進入 Flutter 嗎?適合初學者食用,GetX 是否適合你呢!
- 你知道 Maestro 嗎,兼具人性的自動化測試框架,Flutter 品質就靠它了 — Part 1: 介紹與使用
- 教你為 Riverpod 2.0 撰寫 Flutter 測試 part.1
- 輕鬆了解 Isar NoSQL DB,用它來實作 Flutter 資料庫吧!
- Flutter 輕鬆實作 i18n,使用 easy_localization_generator 就對了
- Flutter CICD 使用 Gitlab Runner 和 App Center 實作 part.1
- 使用 CodeMagic 和 Firebase 實現 Flutter CICD
- 輕鬆完成Flutter開發環境,最新版!
- Easily understand StatefulWidget LifeCycle of Flutter
- “freezed” makes model class strong and easily
- 提高Flutter性能的小技巧!(一)
- What are Async and Isolates in Flutter?
- LoadBalancer is optimization for Isolates in Flutter
About
- GitHub: chyiiiiiiiiiiii
- Instagram: flutterluvr.yii
- Linkedin: yiichenhi
- Youtube: Yii
- Youtube: 一起饅頭(美食頻道)
- Email: ab20803@gmail.com
Contribution
如果覺得文章不錯的話可以贊助,讓我有更多動力和熱情分享學習紀錄和生活!請我喝一杯咖啡吧~
希望有幫助到你/妳,歡迎追蹤我,方便瀏覽最新的文章~