Flutter App 使用 Github Actions 進行 CI/CD
一、CI/CD 與 Github Actions
1、什麼是 CI/CD?
CI/CD (Continuous Integration/Continuous Delivery) 是一種通過在應用開發階段引入自動化來頻繁向客戶交付應用的方法。CD/CD 的核心概念是持續整合、持續交付和持續部署。CI/CD 是一個面向開發和運維團隊的解決方案,主要是為了解決在整合新程式碼時可能會引發的問題(也就是“整合地獄”)。
具體而言,CI/CD 可讓持續自動化和持續監控貫穿於應用的整個生命週期(從整合和測試階段,到交付和部署)。這些關聯的事務通常被統稱為“CI/CD 管道”,由開發和運維團隊以敏捷方式協同支援。
CI/CD 的主要目的是儘早的發現整合錯誤,讓團隊更加緊密的合作,同時使構建自動化,在理想的情況下能隨時進行程式碼釋出。
2 、Github Actions 介紹
github actions 是 Github 提供的 CI/CD 服務,我們在 Github 上的工程,通過 Github Actions 就可以進行自動化測試,構建和釋出。
概念 :
- Wordflow file
工作流配置檔案,YAML 格式檔案,放到 .githu/workflows 目錄下
- Workflow
工作流,通常由一系列任務組成。
- Job
工作流中的任務,通常由一系列步驟 Step 組成。
- Step
任務中的執行步驟,執行命令或者 Action 。
- Action
一個步驟中執行的操作,如拉程式碼等。
- Event
觸發工作流的事件,如 push 操作等。
二、Flutter 專案使用 Github Actions
1、新建專案
Android Studio 新建 Flutter 專案 或者通過 命令列建立。
flutter create flutter_github_actions
複製程式碼
建立完專案之後,直接上傳到 github 上。
2、建立工作流檔案
Github 本身提供了許多預定義的工作流檔案提供給我們使用,但是這裡我們使用自己定義的。
同樣,在一個工程裡面也可以有多個不同的工作流檔案,這裡我們只新建一個進行演示。
在專案根目錄下新建 .github/workflows 目錄,然後再這個目錄下新建一個 main.yml 檔案。
3、編寫命令
接下來就可以在 main.yml 中編寫命令了。
# 觸發工作流的操作
on: push
# 工作流名字
name: Test, Build and Release apk
# 需要執行的任務
jobs:
build:
name: Build APK
# 定義執行環境
runs-on: ubuntu-latest
# 執行步驟
steps:
# 步驟執行之前,先拉取最新程式碼
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: '12.x'
# 配置 Flutter 環境
- uses: subosito/flutter-action@v1
with:
flutter-version: '1.7.8+hotfix.4'
# 執行構建之前,更新 flutter 依賴
- run: flutter pub get
# 測試
- run: flutter test
- run: flutter build apk --debug --split-per-abi
- name: Create a Release APK
uses: ncipollo/release-action@v1
with:
artifacts: "build/app/outputs/apk/debug/*.apk"
token: ${{ secrets.TOKEN }}
複製程式碼
上面的命令中 :
-
actions/checkout@v1 表示使用 Github 提供的 Action 來拉程式碼。
-
ubosito/flutter-action@v1 表示配置 flutter 環境。
-
secrets.TOKEN 許可權檢查
4、配置 Token
執行 CI/CD ,需要獲取許可權才能進行相關的操作,因此需要我們自己配置 Token 。建立一個 Personal access token 來 提供釋出 action 訪問和操作程式碼倉庫的許可權
建立完成之後,複製建立的 Token 值,然後到新建的倉庫的 Settings 頁,新建 Secrets ,在這裡新建一個變數名為 TOKEN ,值為剛才複製的 Token 值的 secret 。
5、git push 觸發構建
建立成功之後,就可以測試是否能夠觸發工作流。
git tag v1.0
git push origin v1.0
複製程式碼
執行 git 命令之後,就可以在 github 上看是否再執行構建了。
參考資料:
1、How to Setup CI/CD for Flutter Apps with GitHub Actions
2、CI/CD for Flutter Apps Using GitHub Actions
推薦閱讀
歡迎關注「Flutter 程式設計開發」微信公眾號 。