如何使用YAML配置创建Azure DevOps发布管道并定义阶段?
通过YAML创建Azure DevOps发布管道阶段
Azure DevOps支持使用多阶段YAML管道直接整合构建与部署(发布)流程,无需依赖经典的可视化发布管道。以下是具体实现方法:
核心思路
发布管道的阶段在YAML中以stage节点定义,与构建阶段结构一致,但侧重部署任务。你可以选择在现有构建YAML中添加部署阶段,或单独编写仅包含部署逻辑的YAML文件。
步骤1:定义部署阶段
示例:包含构建+测试+生产部署的完整YAML
# 构建阶段(保留你已有的构建逻辑) stages: - stage: Build displayName: '构建应用' jobs: - job: BuildApp pool: vmImage: 'ubuntu-latest' steps: - script: dotnet build --configuration Release displayName: '编译项目' - publish: $(Build.ArtifactStagingDirectory) artifact: AppPackage displayName: '发布构建产物' # 部署到测试环境阶段 - stage: Deploy_Test displayName: '部署至测试环境' dependsOn: Build # 依赖构建阶段成功完成 condition: succeeded() # 仅当前面阶段成功时执行 jobs: - deployment: DeployTest displayName: '测试环境部署' environment: 'Test-Environment' # 关联Azure DevOps中预创建的环境 pool: vmImage: 'ubuntu-latest' strategy: runOnce: # 简单单次部署策略,可选rolling/canary等 deploy: steps: - download: current artifact: AppPackage displayName: '下载构建产物' - script: echo "部署至测试服务器:复制文件、配置环境变量..." displayName: '执行部署操作' # 部署到生产环境阶段(带审批机制) - stage: Deploy_Prod displayName: '部署至生产环境' dependsOn: Deploy_Test condition: succeeded() jobs: - deployment: DeployProd displayName: '生产环境部署' environment: name: 'Prod-Environment' resourceType: VirtualMachine # 指定环境资源类型,如WebApp/Kubernetes等 pool: vmImage: 'ubuntu-latest' strategy: runOnce: deploy: steps: - download: current artifact: AppPackage displayName: '下载构建产物' - script: echo "生产环境部署:执行滚动更新、健康检查..." displayName: '执行生产部署操作'
步骤2:配置关键特性
1. 环境与审批
在Azure DevOps中提前创建Test-Environment、Prod-Environment等环境,可在环境设置中添加审批人、部署检查(如负载均衡健康检查),这些规则会自动应用到YAML中关联该环境的部署阶段。
2. 部署策略
根据需求选择部署策略:
runOnce:单次部署,适合简单场景rolling:滚动更新,逐步替换旧版本canary:金丝雀部署,先向小部分用户推送新版本
3. 工件来源
通过download步骤获取构建阶段发布的产物,若单独编写发布YAML,需在管道配置中指定工件来源(如关联某个构建管道的产物)。
步骤3:创建并运行管道
- 进入Azure DevOps项目,点击「管道」→「新建管道」
- 选择代码仓库,找到你的YAML文件
- 保存管道并运行,即可触发包含构建与部署阶段的完整流程
内容的提问来源于stack exchange,提问作者Dinesh Sonachalam
相关产品推荐
相关产品推荐

