Azure DevOps 流水线实战:.NET 应用构建与 Azure VM 部署自动化
·
Azure DevOps 流水线实战:.NET 应用构建与 Azure VM 部署自动化
1. 核心流程概述
- 构建阶段:代码编译 → 单元测试 → 生成部署包
- 部署阶段:连接 Azure VM → 传输部署包 → 应用配置 → 服务启动
- 完整流程:
代码提交 → 自动触发流水线 → 构建 .NET 应用 → 发布到 Azure VM
2. 构建流水线配置(YAML 示例)
trigger:
- main # 监听 main 分支提交
pool:
vmImage: 'windows-latest' # 使用 Windows 代理
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1 # NuGet 工具安装
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1 # 编译 .NET 应用
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2 # 执行单元测试
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1 # 发布部署包
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
3. Azure VM 部署关键步骤
(1) 创建部署组
- Azure DevOps → 部署组 → 新建组(如
Production-VMs) - 在目标 Azure VM 执行注册脚本:
.\config.cmd --deploymentgroup --agent $env:COMPUTERNAME --runasservice --deploymentgroupname "Production-VMs" --acceptteeeula
(2) 发布流水线配置
stages:
- stage: Deploy
jobs:
- deployment: VMDeployment
environment:
name: Production-VMs
resourceType: VirtualMachine
strategy:
runOnce:
deploy:
steps:
- download: current # 获取构建产物
artifact: drop
- task: IISWebAppDeploymentOnMachineGroup@0 # IIS 部署
inputs:
WebSiteName: 'MyApp'
Package: '$(Pipeline.Workspace)/drop/**/*.zip'
- script: net start MyAppService # 启动服务
displayName: '启动应用程序服务'
4. 关键配置项说明
| 组件 | 作用 | 注意事项 |
|---|---|---|
| 部署组 | 管理目标 VM 集群 | 需在每台 VM 安装代理 |
| IIS 部署任务 | 自动配置 IIS 站点 | 需提前在 VM 安装 IIS 角色 |
| 环境变量 | 传递配置参数 | 建议使用 $(variable) 语法管理敏感值 |
5. 常见问题排查
- 部署失败:
- 检查 VM 代理状态:
Get-Service vstsagent* - 验证网络策略:确保 VM 允许 Azure DevOps 出口 IP
- 检查 VM 代理状态:
- 构建中断:
# 清理 NuGet 缓存 dotnet nuget locals all --clear - 权限问题:
- 在 Azure 服务连接中配置 Contributor 角色
- VM 本地策略授予
IIS_IUSRS写权限
提示:使用 多阶段 YAML 可统一管理构建/部署流程,完整示例见 Azure DevOps 文档。
更多推荐
所有评论(0)