前言
Github Actions 是 Github 提供的一種 CI/CD 服務,如果你的 Flutter 應用程式碼放在 Github 上,那就可以使用這個服務自動化進行應用測試,構建,釋出工作了。
先說下 Github Actions 幾個核心概念,感覺還是挺易懂的,不得不說 Github Actions 的設計很厲害 ?
Workflow file
配置工作流程的檔案,YAML 格式,放在專案根目錄的 .github/workflows
目錄內
Workflow
由配置檔案定義的一個工作流程,由一系列的的任務組成
Job
工作流程中的一個任務,由一系列的步驟 Step 組成
Step
一個任務其中的一個執行步驟,執行一些命令或者 Action
Action
一個步驟中的具體要進行操作,如拉取程式碼,傳送請求等,可以使用自己或社群共享的 Action
Event
觸發工作流程執行的事件,比如推送程式碼到倉庫 push,建立一個版本標籤 tag 等
Artifact
工程流程執行時產生的東西
Runner
就是工作流程執行的地方,Github 提供的伺服器
示例
下面用一個示例專案來說明如何使用 Github Actions 釋出 Flutter 應用,先放成果 地址
![使用 Github Actions 持續釋出 Flutter 應用](https://i.iter01.com/images/d4db5f568d5cbb56f0bbbcdfa6282189a3bddfa9a09a18563980b27f3387d23e.jpg)
- 首先建立一個 Flutter 專案
flutter create flutter_github_actions
複製程式碼
- 新增一個配置檔案
.github/workflows/main.yml
![使用 Github Actions 持續釋出 Flutter 應用](https://i.iter01.com/images/08c283e757f5bfb7fb40377d3b21174a4faab0c8283f421949e01da4a231c8c5.jpg)
- 配置工作流程,將程式碼推送到 Github
# main.yml
# 工作流程的名字
name: Test, Build and Release apk
# 工作流程觸發的時機,這裡是當一個版本標籤推送到倉庫時觸發
on:
push:
tags:
- v*
# 這個工作流程需要執行的任務
jobs:
process:
name: all process
runs-on: ubuntu-latest
# 這個任務的步驟
steps:
# 拉取專案程式碼
- uses: actions/checkout@v2
# 建立 java 環境
- name: Setup Java JDK
uses: actions/setup-java@v1.3.0
with:
java-version: "12.x"
# 建立 Flutter 環境
- name: Flutter action
uses: subosito/flutter-action@v1.1.1
with:
channel: "stable"
flutter-version: "1.12.x"
# 下載專案依賴
- run: flutter pub get
# 執行測試
- run: flutter test
# 打包 APK
- run: flutter build apk --release
# 釋出到 Release
- name: Release apk
uses: ncipollo/release-action@v1.5.0
with:
artifacts: "build/app/outputs/apk/release/*.apk"
token: ${{ secrets.GITHUB_RElEASE_TOKEN }}
複製程式碼
- 建立 Token
要把構建出來的 apk 釋出到倉庫的 Release,還需要建立一個 Personal access token 提供釋出 action 訪問和操作程式碼倉庫的許可權,注意不要關閉瀏覽器標籤,因為這個 token 只有在第一次建立的時候可見。
![使用 Github Actions 持續釋出 Flutter 應用](https://i.iter01.com/images/2ced0c76444d057792dc3415a758a3736aa0191e1639397d1a68568574d81ca4.jpg)
- 新增環境變數
最後為了能在工作流程中建立的 token,需要在倉庫的 secrets 裡新增一個環境變數 GITHUB_RElEASE_TOKEN
來儲存 token 值
![使用 Github Actions 持續釋出 Flutter 應用](https://i.iter01.com/images/bd380b6598d18679ea49871f5267822848ef6f2419c623d9f6ebcc10aac22a52.jpg)
- 觸發構建
最後建立一個版本標籤,推送到倉庫觸發工作流程
git tag v1.0.0
git push --tag
複製程式碼
然後就可以在倉庫的 Actions 裡面看到正在執行的工作流程了
![使用 Github Actions 持續釋出 Flutter 應用](https://i.iter01.com/images/dfb20b26a69d199120c80d91c0f62022eaafe5e1fb44e49115b13e437317682e.jpg)
總結
總結一下就是以下 4 個步驟
- 建立一個工作流程的配置檔案
.github/workflows/main.yml
- 建立一個 Personnal access token
- 在專案的 serect 裡面新增一個環境變數
GITHUB_RElEASE_TOKEN
- 推送一個版本標籤?️,觸發工作流程
之後就可以在每次釋出標籤後自動釋出了