C# 实现CI/CD链路的
·
以下是实现CI/CD链路的C#代码,涵盖构建、测试、部署等关键环节的自动化流程:
基础项目结构
// Program.cs 示例入口
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.MapControllers();
app.Run();
}
}
单元测试示例
// Tests/CalculatorTests.cs
using Xunit;
public class CalculatorTests
{
[Fact]
public void Add_TwoNumbers_ReturnsSum()
{
var calculator = new Calculator();
var result = calculator.Add(2, 3);
Assert.Equal(5, result);
}
}
public class Calculator
{
public int Add(int a, int b) => a + b;
}
CI/CD 配置文件
# .github/workflows/dotnet-ci-cd.yml
name: .NET CI/CD Pipeline
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '6.0.x'
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore --configuration Release
- name: Test
run: dotnet test --no-build --verbosity normal
- name: Publish
run: dotnet publish -c Release -o ./publish
- name: Deploy to Azure Web App
if: github.ref == 'refs/heads/main'
uses: azure/webapps-deploy@v2
with:
app-name: 'your-app-name'
publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
package: ./publish
Docker 集成
# Dockerfile
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY . .
RUN dotnet restore
RUN dotnet publish -c release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "YourApp.dll"]
关键组件说明
- GitHub Actions:自动化执行构建、测试和部署
- Azure Web Apps:托管部署目标(可替换为AWS/其他服务)
- Docker:容器化部署方案
- xUnit:单元测试框架
实际使用时需替换your-app-name和密钥配置,并根据项目需求调整工作流步骤。
更多推荐
所有评论(0)