引言:CI/CD 为何对 C# (.NET) 项目至关重要
现代软件开发离不开自动化。手动进行构建、测试和部署流程不仅速度缓慢,而且容易出错。对于使用 .NET 生态系统的 C# 开发者而言,实施 CI/CD(持续集成/持续部署) 实践已成为行业标准。
GitHub Actions 是一款功能强大且灵活的自动化工作流工具,内置于 GitHub 中。它允许您创建能响应仓库事件(如推送、拉取请求创建、发布等)的管道(工作流)。在本文中,我们将详细介绍如何使用 GitHub Actions 为基于 .NET 的 C# 项目设置一个完整的 CI/CD 管道。
您将学习如何:
- 设置自动项目构建。
- 运行单元测试(例如 xUnit 或 NUnit)。
- 发布构建产物。
- 自动部署应用程序(例如部署到 Azure、Docker Hub 或服务器)。
1. GitHub Actions 基础:工作流、作业和步骤
在编写代码之前,让我们先了解 GitHub Actions 的基本概念。
- 工作流: 这是一个自动化流程,您在
.github/workflows文件夹内的 YAML 文件中定义它。工作流由某个事件(例如,推送到主分支)触发。 - 作业: 在单个运行器(虚拟机)上执行的一组步骤。作业可以按顺序运行,也可以并行运行。
- 步骤: 一条单独的命令或操作。这可以是运行脚本、安装依赖项或使用市场中的预建操作。
- 运行器: 执行您工作流的服务器。GitHub 提供免费的运行器(Ubuntu、Windows、macOS),或者您也可以自行托管。
对于 .NET 项目,我们将使用现成的操作,例如 actions/checkout(用于克隆仓库)和 actions/setup-dotnet(用于安装 .NET SDK)。
2. 设置基本 CI 管道:构建与测试
让我们创建第一个工作流。为此,请在仓库根目录下创建一个名为 .github/workflows 的文件夹,并在其中创建一个名为 dotnet-build.yml 的文件。
以下是一个用于构建和测试 C# 项目的最小 YAML 文件:
name: .NET Build and Test
on: push: branches: [ main, develop ] pull_request: branches: [ main ]
jobs: build-and-test: runs-on: ubuntu-latest
steps: - name: Checkout repository uses: actions/checkout@v4
- name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' # Specify your .NET version
- name: Restore dependencies run: dotnet restore
- name: Build run: dotnet build --no-restore --configuration Release
- name: Run tests run: dotnet test --no-build --configuration Release --verbosity normal代码解析:
- name: 工作流的名称,将显示在 GitHub 中。
- on: 定义触发器。在我们的案例中,是对 main 和 develop 分支的推送和拉取请求。
- jobs: 包含一个名为
build-and-test的作业,该作业在ubuntu-latest上运行。 - steps: 一系列操作:克隆代码、安装 .NET 8.0、还原 NuGet 包、以 Release 配置进行构建以及运行测试。
将此文件推送到仓库后,GitHub Actions 将自动运行该工作流。您将看到绿色对勾或红色叉号出现在