前言
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 應用,先放成果 地址
- 首先建立一個 Flutter 專案
flutter create flutter_github_actions
複製程式碼
- 新增一個配置檔案
.github/workflows/main.yml
- 配置工作流程,將程式碼推送到 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 只有在第一次建立的時候可見。
- 新增環境變數
最後為了能在工作流程中建立的 token,需要在倉庫的 secrets 裡新增一個環境變數 GITHUB_RElEASE_TOKEN
來儲存 token 值
- 觸發構建
最後建立一個版本標籤,推送到倉庫觸發工作流程
git tag v1.0.0
git push --tag
複製程式碼
然後就可以在倉庫的 Actions 裡面看到正在執行的工作流程了
總結
總結一下就是以下 4 個步驟
- 建立一個工作流程的配置檔案
.github/workflows/main.yml
- 建立一個 Personnal access token
- 在專案的 serect 裡面新增一個環境變數
GITHUB_RElEASE_TOKEN
- 推送一個版本標籤?️,觸發工作流程
之後就可以在每次釋出標籤後自動釋出了