快速入门:创建生成验证 GitHub 工作流

本快速入门介绍如何创建 GitHub 工作流来验证 .NET 源代码在 GitHub 中的编译。 编译 .NET 代码是帮助确保代码更新质量的最基本验证步骤之一。 如果代码无法编译(或生成),则很显然这是一种警示,它很清楚地表明代码需要修复。

先决条件

创建工作流文件

在 GitHub 存储库中,将新的 YAML 文件添加到 .github/workflows 目录。 选择一个有意义的文件名,这将清楚地指示工作流要执行的操作。 有关详细信息,请参阅工作流文件

重要

GitHub 要求将工作流组合文件放置在 .github/workflows 目录中。

工作流文件通常通过 jobs.<job_id>/steps[*] 定义一个或多个 GitHub Action 的组合。 有关详细信息,请参阅 GitHub Actions 的工作流语法

创建名为 build-validation.yml 的新文件,将以下 YML 内容复制并粘贴到该文件:

name: build

on:
  push:
  pull_request:
    branches: [ main ]
    paths:
    - '**.cs'
    - '**.csproj'

env:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  build:

    name: build-${{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: build 定义名称,“build”将显示在工作流状态徽章中。

    name: build
    
  • on 节点表示触发工作流的事件:

    on:
      push:
      pull_request:
        branches: [ main ]
        paths:
        - '**.cs'
        - '**.csproj'
    
    • main 分支上发生 pushpull_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:
    
        name: build-${{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
    
    • 有一个名为 build-<os> 的作业,其中 <os> 是来自 strategy/matrix 的操作系统名称。 matrix/os 中每个值的 nameruns-on 元素都是动态的。 这将在最新版本的 Ubuntu、Windows 和 macOS 上运行。

    • actions/setup-dotnet@v3 GitHub 操作需要使用 DOTNET_VERSION 环境变量中的指定版本设置 .NET SDK。

    • (可选)可能需要执行其他步骤,具体取决于 .NET 工作负载。 此示例中省略了这些步骤,但你可能需要安装其他工具来生成应用。

      • 例如,在使用提前 (AoT) 编译生成 ASP.NET Core Blazor WebAssembly 应用程序时,需要在运行还原/生成/发布操作之前安装相应的工作负载。
      - name: Install WASM Tools Workload
        run: dotnet workload install wasm-tools
      

      有关 .NET 工作负载的详细信息,请参阅 dotnet workload install

    • 调用 dotnet restore 命令。

    • 调用 dotnet build 命令。

在这种情况下,可将工作流文件视为表示生成应用程序的各个步骤的组合。 许多 .NET CLI 命令可用,其中的大部分命令可在 GitHub Actions 上下文中使用。

创建工作流状态徽章

GitHub 存储库有一个 README.md 文件,位于存储库目录的根目录下。 同样,最好报告各种工作流的最新状态。 所有工作流都可以生成一个状态徽章,它在 README.md 文件中具有视觉吸引力。 若要添加工作流状态徽章,请执行以下操作:

  1. 从 GitHub 存储库中选择“Actions”导航选项。

  2. 所有存储库工作流都显示在左侧,选择所需的工作流和省略号 (...) 按钮。

    • 省略号 (...) 按钮展开所选工作流的菜单选项。
  3. 选择“创建状态徽章”菜单选项。

    GitHub: Create status badge

  4. 选择“复制状态徽章 Markdown”按钮。

    GitHub: Copy status badge Markdown

  5. 将 Markdown 粘贴到 README.md 文件中,保存文件,提交并推送更改。

有关详细信息,请参阅添加工作流状态徽章

生成工作流状态徽章示例

通过 失败 无状态
GitHub: build passing badge GitHub: build failing badge GitHub: build no-status badge

另请参阅

后续步骤