簡單完成 Flutter CICD,專注開發吧
在任何應用的開發過程中,CICD通常扮演一個重要的角色跟階段,它能自動化幫你處理很多工作。在專案Push更新後,進行專案建置,並產出安裝檔,最後將應用部署到公開平台,提供大家下載和使用。這一連串的任務如果是手動執行的話當然是花非常多時間,而有了CICD工具的幫忙後,再也不需要擔心這些事情,讓我們開發者可以專注在最重要的開發上,想著如何讓產品更好、使用者更喜歡。
本文會使用Gitlab版控平台,搭配CodeMagic和Firebase App Distribution,實作簡單又完整的CICD,有效幫助各位開發者提升效率,開心寫Code吧!
Step01. 將 Flutter 專案上傳到 Gitlab
不需要做額外設定
Step02. 打開 CodeMagic 為 Flutter 設置 CICD
官網: https://codemagic.io/start/
- 首先到後台,Add application
- 選擇專案放置的版控平台,這邊使用 Gitlab
- 選擇 Flutter project repository,並勾選 Flutter App (via Workflow Editor)
選擇需要部署的平台
- 免費用戶可以勾選Android、iOS、Web
- 付費用戶才能使用其他平台
選擇運行的機器
可以根據需求做選擇,額外還有5台版本
設定觸發時機
- Trigger on push ➤ 當有新東西推上Repo,可以指定分支
- Trigger on pull request update ➤ 當有新的PR被允許
- Trigger on tag creation ➤ 當有新的標籤推上Repo,可以指定標籤,例如:build
設定環境變數
如果有重要資料要存取但不想寫在Repo裡面,可以放在CodeMagic,專案內透過錢符號取得資料,例如:$API_KEY
設置套件緩存
加速Build速度,縮短時間。根據需求決定是否需要
設置代碼分析
搭配Lint tool,維護專案高品質
dart_code_metrics
可以幫忙檢查沒有用到的檔案、代碼,以及不需要的nullable內容- 熱門的Lint tool,例如:
flutter_lints
、lint
、dart_code_metrics
設置測試
包含單元測試、整合測試,可惜沒有Widget Test
設置建置內容
- 包含個環境的版本,選擇與你的專案相符即可
- 選擇Android匯出的格式,一般來說APK安裝比較方便
- 選擇Release模式,部署產品版本,檔案小性能好
設置自定義script
也可以在過程中,做任何想做的事
設置部署資訊
📍Android code signing簽署。Keystore可以在AndroidStudio裡面建立,也可以透過指令生成
Keystore可以在AndroidStudio裡面建立,也可以透過指令生成
📍iOS code signing 簽署
- Automatic 自動簽署
- Manual 手動簽署
Code signing certificate 為.p12檔案,需要從Keychain裡面取得。將憑證和內容選取,點擊右鍵,並輸入項目,給予密碼
會需要這些檔案進行上傳
📍Firebase App Distribution
- Firebase token
- 雙平台APP Id
- 測試團隊、群組
需要為Flutter專案準備Firebase環境,依照步驟完成設定,取得相關資料
取得Firebase Token,登入後即可取得,透過Terminal指令登入
firebase login:ci
為Flutter專案新增Firebase設定,其中App Id會用到,需要記錄下來
在專案進行Firebase初始化,並載入相關設定
到Firebase Console,打開Firebase App Distribution,並點擊開始使用,否則CodeMagic在部署的時候會出錯哦
回到 CodeMagic 補上所有資訊,部署後通知指定群組的成員,他們就能開始測試囉
設置通知
在APP部署完成後進行通知,可以發送到綁定的Email,或是Slack頻道裡面,方便了解CICD的最新狀況
完成設定,觸發CICD工作
到這邊設定就都完成了,接下來可以手動開始執行部署,或是嘗試push新的東西到Repo,CodeMagic會開始工作,運行一個Build,也可以點擊查看相關資訊。
部署完成,每個APP安裝檔能直接點擊下載
這時候 CodeMagic Builds 會顯示新的工作紀錄,也可以到 Firebase App Distribution 查看部署資訊
信箱會收到CodeMagic部署完成的訊息,根據自己的手機平台進行對應安裝檔的下載。如果是還沒進入測試群組的用戶,需要進入後下載對應憑證,並在手機裡進行允許,這樣才能下載APP到手機哦。
恭喜,你的專案也有CICD了!
其他文章
- 如何在Flutter使用 Makefile 節省你的時間?
- Easily understand StatefulWidget LifeCycle of Flutter
- “freezed” makes model class strong and easily
- 提高Flutter性能的小技巧!(一)
- 提高Flutter性能的小技巧!(二)
- 提高Flutter性能的小技巧!(三)
- What are Async and Isolates in Flutter?
- LoadBalancer is optimization for Isolates in Flutter
- Flutter 3 有什麼新東西?
- Riverpod 輕鬆學,原來這麼好用!
- Riverpod 輕鬆學(二),一些進階用法!
關於我
- GitHub: chyiiiiiiiiiiii
- Instagram: flutterluvr.yii
- Linkedin: yiichenhi
- Youtube: Yii
- Youtube: 一起饅頭(美食頻道)
- Email: ab20803@gmail.com
贊助
謝謝你花費時間看完,非常感謝!
如果覺得文章不錯的話可以贊助,讓我有更多動力和熱情分享學習紀錄和生活!請我喝一杯咖啡吧~
最後
希望有幫助到你/妳,歡迎追蹤我,方便瀏覽最新的文章~