Github Actions 是 Github 提供的一種 CI/CD 服務,若是你的 Flutter 應用代碼放在 Github 上,那就能夠使用這個服務自動化進行應用測試,構建,發佈工做了。java
先說下 Github Actions 幾個核心概念,感受仍是挺易懂的,不得不說 Github Actions 的設計很厲害 😄git
Workflow file
github
配置工做流程的文件,YAML 格式,放在項目根目錄的 .github/workflows
目錄內ubuntu
Workflow
瀏覽器
由配置文件定義的一個工做流程,由一系列的的任務組成服務器
Job
app
工做流程中的一個任務,由一系列的步驟 Step 組成gitlab
Step
post
一個任務其中的一個執行步驟,執行一些命令或者 Action測試
Action
一個步驟中的具體要進行操做,如拉取代碼,發送請求等,能夠使用本身或社區共享的 Action
Event
觸發工做流程運行的事件,好比推送代碼到倉庫 push,建立一個版本標籤 tag 等
Artifact
工程流程執行時產生的東西
Runner
就是工做流程運行的地方,Github 提供的服務器
下面用一個示例項目來講明如何使用 Github Actions 發佈 Flutter 應用,先放成果 地址
flutter create flutter_github_actions
複製代碼
.github/workflows/main.yml
# 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 }}
複製代碼
要把構建出來的 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
GITHUB_RElEASE_TOKEN
以後就能夠在每次發佈標籤後自動發佈了