快速入门:创建测试验证 GitHub 工作流
在本快速入门中,你将了解如何创建 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'
- 当
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'
。 稍后将引用环境变量以指定actions/setup-dotnet@v3
GitHub Action 的dotnet-version
。
- 将环境变量
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
的操作系统名称。matrix/os
中每个值的name
和runs-on
元素都是动态的。 这将在最新版本的 Ubuntu、Windows 和 macOS 上运行。 actions/setup-dotnet@v3
GitHub Action 用于使用DOTNET_VERSION
环境变量中的指定版本设置 .NET SDK。- 调用
dotnet restore
命令。 - 调用
dotnet build
命令。 - 调用
dotnet test
命令。
- 有一个名为
创建工作流状态徽章
GitHub 存储库有一个 README.md 文件,位于存储库目录的根目录下。 同样,最好报告各种工作流的最新状态。 所有工作流都可以生成一个状态徽章,它在 README.md 文件中具有视觉吸引力。 若要添加工作流状态徽章,请执行以下操作:
从 GitHub 存储库中选择“Actions”导航选项。
所有存储库工作流都显示在左侧,选择所需的工作流和省略号 (...) 按钮。
- 省略号 (...) 按钮展开所选工作流的菜单选项。
选择“创建状态徽章”菜单选项。
选择“复制状态徽章 Markdown”按钮。
将 Markdown 粘贴到 README.md 文件中,保存文件,提交并推送更改。
有关详细信息,请参阅添加工作流状态徽章。
示例测试工作流状态徽章
通过 | 失败 | 无状态 |
---|---|---|