使用 Github Actions 持續釋出 Flutter 應用

踏前斬發表於2020-02-28

前言

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 應用

  1. 首先建立一個 Flutter 專案
flutter create flutter_github_actions
複製程式碼
  1. 新增一個配置檔案 .github/workflows/main.yml

使用 Github Actions 持續釋出 Flutter 應用

  1. 配置工作流程,將程式碼推送到 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 }}

複製程式碼
  1. 建立 Token

要把構建出來的 apk 釋出到倉庫的 Release,還需要建立一個 Personal access token 提供釋出 action 訪問和操作程式碼倉庫的許可權,注意不要關閉瀏覽器標籤,因為這個 token 只有在第一次建立的時候可見。

使用 Github Actions 持續釋出 Flutter 應用

  1. 新增環境變數

最後為了能在工作流程中建立的 token,需要在倉庫的 secrets 裡新增一個環境變數 GITHUB_RElEASE_TOKEN 來儲存 token 值

使用 Github Actions 持續釋出 Flutter 應用

  1. 觸發構建

最後建立一個版本標籤,推送到倉庫觸發工作流程

git tag v1.0.0

git push --tag
複製程式碼

然後就可以在倉庫的 Actions 裡面看到正在執行的工作流程了

使用 Github Actions 持續釋出 Flutter 應用

總結

總結一下就是以下 4 個步驟

  1. 建立一個工作流程的配置檔案 .github/workflows/main.yml
  2. 建立一個 Personnal access token
  3. 在專案的 serect 裡面新增一個環境變數 GITHUB_RElEASE_TOKEN
  4. 推送一個版本標籤?️,觸發工作流程

之後就可以在每次釋出標籤後自動釋出了

原文地址

相關文章