0%

【文章翻譯】Announcing Dart support for GitHub Actions

【文章內容使用 Gemini 1.5 Pro 自動翻譯產生】

宣布 GitHub Actions 支援 Dart

GitHub Actions 是一個熱門的 GitHub 儲存庫持續整合 (CI) 服務。今天,我們宣布由 Dart 團隊提供的官方 setup-dart action。此 action 支援下載、安裝和設定 Dart SDK,讓您可以在 GitHub Actions 上輕鬆執行 Dart 建置和測試工作。

如果您為 pub.dev 製作 Dart 套件,我們鼓勵您使用 GitHub Actions 為您的儲存庫啟用 CI 測試,以便為您(和套件使用者)提供有關套件是否健康的訊號。GitHub Actions 上的 CI 工作對 公開儲存庫 是免費的。

介紹 setup-dart

如果您有一個包含 Dart 應用程式的 GitHub 儲存庫,您只需點擊幾下即可使用 GitHub Actions 和 setup-dart action 啟用 CI 測試。這裡我們有一個名為 myapp 的新 GitHub 儲存庫,其中包含使用 Dart 工具產生的小型應用程式的起點,透過執行
dart create --template console-full myapp

接下來,打開 GitHub 網頁 UI,然後點擊 Actions 標籤:

在介紹下方,您應該會看到一個建議 Dart 儲存庫工作流程的區段:

點擊 設定此工作流程 按鈕,您將進入 GitHub UI,以新增一個新的 .github/workflow/dart.yml 檔案。這是一個 YAML 檔案,定義了要在儲存庫中執行的 GitHub Actions 工作流程。讓我們回顧一下範本 工作流程 檔案建議的每個組成部分。

首先,我們定義工作流程的名稱,該名稱將顯示在 Actions 管理 UI 中:

1
name: Dart

接下來,我們定義何時應該執行工作流程(觸發工作流程的事件)。這裡,工作流程設定為在每次推送到 main 分支或 main 分支的 PR 時執行。我個人發現,當我難以讓工作流程執行時,通常是因為我拼錯了分支名稱。

1
2
3
4
5
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

然後是一個作業列表,每個作業都有一個名稱(這裡是測試)。每個作業都有自己的定義,包括在哪裡執行作業(此作業在 Ubuntu Linux 上執行)以及要執行的步驟:

1
2
3
4
jobs:
test:
runs-on: ubuntu-latest
steps:

至於具體的測試,我們首先檢出正在測試的儲存庫,然後執行新的 setup-dart action。這會下載並安裝 Dart SDK,然後將 dart CLI 和 pub 全局目录添加到路徑中。這裡我們沒有指定要安裝哪個 Dart SDK,因此 action 將安裝最新的穩定通道 SDK。

1
2
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1

然後,我們可以繼續執行我們想要的測試,例如格式化、分析和單元測試:

1
2
3
4
5
6
7
8
9
10
11
- name: 安裝相依性
run: dart pub get

- name: 驗證格式
run: dart format --output=none --set-exit-if-changed .

- name: 分析專案原始碼
run: dart analyze

- name: 執行測試
run: dart test

有關完整範例,請參閱我們的 package:characters 工作流程

指定 SDK 版本

setup-dart action 支援指定您想要安裝的 Dart 版本。這可以採用兩種形式之一:

  • 特定版本,例如 2.9.0 或 2.12.0–259.12.beta
  • 來自 發佈通道 的最新版本,例如 stable 或 beta

要指定版本,請使用 sdk 參數,直接使用或作為 測試矩陣 的一部分:

1
2
3
4
5
6
7
8
9
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
sdk: [2.10.0, stable, beta]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- uses: dart-lang/[email protected]
with:
sdk: ${{ matrix.sdk }}

此矩陣的結果是九個單獨執行的作業:

現在一切都通過了,您可能想要 在您的 README.md 檔案中加入一個狀態徽章 以顯示測試狀態。

其他解決方案

GitHub Actions 是持續整合的幾種熱門解決方案之一。其他支援 Dart SDK 的解決方案包括 TravisAppVeyorCodeShip。對於 Flutter 應用程式的測試,選項包括 Nevercode 的 CodemagicCirrus CIBitrise。Flutter 應用程式的 GitHub Actions 由社群貢獻的 action 啟用,例如 flutter-action

目前就這樣。我們希望您喜歡 Dart 的這個新的 CI 支援,如果您對 setup-dart 有任何回饋或問題,請在 議題追蹤器 中告知我們。


宣布 GitHub Actions 支援 Dart 最初發佈在 Dart 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。