在本快速入門中,您將瞭解如何建立 GitHub 工作流程來測試 .NET 原始程式碼。 在 GitHub 中,自動測試您的 .NET 程式碼稱為持續整合(CI),當拉取請求或對源代碼的更改發生時,將觸發工作流程以執行測試。 除了 建置原始程式碼,測試可確保編譯的原始程式碼如作者所預期般運作。 單元測試通常做為立即的意見反應迴圈,以協助確保原始碼變更的有效性。
先決條件
- GitHub 帳戶。
- .NET 原始程式碼存放庫。
建立工作流程檔案
在 GitHub 存放庫中,將新的 YAML 檔案新增至 .github/workflows 目錄。 選擇有意義的檔名,會清楚指出工作流程要執行的動作。 如需詳細資訊,請參閱 工作流程檔案。
這很重要
GitHub 要求將工作流程組合檔案放在 .github/workflows 目錄中。
工作流程檔案通常會透過 jobs.<job_id>/steps[*]定義一或多個 GitHub Action 的組合。 如需詳細資訊,請參閱 GitHub Actions 的工作流程語法。
建立名為 build-and-test.yml 的新檔案,複製下列 YML 內容並貼到其中:
name: build and test
on:
push:
pull_request:
branches: [ main ]
paths:
- '**.cs'
- '**.csproj'
env:
DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
jobs:
build-and-test:
name: build-and-test-${{matrix.os}}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- uses: actions/checkout@v3
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Install dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
- name: Test
run: dotnet test --no-restore --verbosity normal
在上述工作流程組合中:
定義
name: build and test名稱「建置和測試」會出現在工作流程狀態徽章中。name: build and test節點
on表示觸發工作流程的事件:on: push: pull_request: branches: [ main ] paths: - '**.cs' - '**.csproj'- 當任何以 .cs 或 .csproj 結尾的檔案在
main分支上發生變更時,將會觸發push或pull_request。
- 當任何以 .cs 或 .csproj 結尾的檔案在
節點
env會定義具名環境變數 (env var)。env: DOTNET_VERSION: '6.0.401' # The .NET SDK version to use- 環境變數
DOTNET_VERSION會指派 值'6.0.401'。 稍後會參考環境變數,以指定dotnet-versionGitHub Action 的actions/setup-dotnet@v3。
- 環境變數
節點
jobs會建置工作流程要採取的步驟。jobs: build-and-test: name: build-and-test-${{matrix.os}} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v3 - name: Setup .NET Core uses: actions/setup-dotnet@v3 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Install dependencies run: dotnet restore - name: Build run: dotnet build --configuration Release --no-restore - name: Test run: dotnet test --no-restore --verbosity normal- 有一個名為
build-<os>的單一作業,其中<os>是來自strategy/matrix的作業系統名稱。name和runs-on元素針對matrix/os中的每個值都是動態的。 這會在最新版本的Ubuntu、Windows和macOS上執行。 - GitHub
actions/setup-dotnet@v3Action 用於根據DOTNET_VERSION環境變數設定指定版本的 .NET SDK。 - 呼叫
dotnet restore命令。 - 呼叫
dotnet build命令。 - 呼叫
dotnet test命令。
- 有一個名為
建立工作流程狀態徽章
GitHub 存放庫通常會在存放庫目錄的根目錄有 README.md 檔案。 同樣地,最好報告各種工作流程的最新狀態。 所有工作流程都可以產生狀態徽章,這在 README.md 檔案內具有視覺吸引力。 若要新增工作流程狀態徽章:
從 GitHub 存放庫選取 [動作 ] 瀏覽選項。
所有存放庫工作流程都會顯示在左側,選取所需的工作流程和省略號 (...) 按鈕。
- 省略號 (...) 按鈕會展開所選工作流程的功能表選項。
選取 [ 建立狀態徽章 ] 功能表選項。
選取 [ 複製狀態徽章 Markdown ] 按鈕。
將 Markdown 貼入 README.md 檔案,儲存檔案,提交並推送變更。
如需詳細資訊,請參閱 新增工作流程狀態徽章。
範例測試工作流程狀態徽章
| 通過 | 失敗 | 無狀態 |
|---|---|---|
|
|
|
|