You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps YAML如何用stages替代steps并配置任务条件执行

Azure DevOps 多阶段流水线配置方案

直接按下面的逻辑改造YAML即可,用流水线内置的条件规则就能满足要求,不需要额外安装插件:

  • 把原有平铺在根steps下的两个任务拆分到两个独立stage中,构建任务放在全分支触发的通用构建阶段,部署相关任务放在独立的部署阶段
  • 给部署阶段配置双重校验规则,只有两个条件同时满足时才会执行:
    • 前置构建阶段执行成功
    • 当前触发流水线的分支为master分支
  • 根级别配置的虚拟机池、全局变量组会自动被所有stage继承,不需要在每个阶段重复声明

改造完成的完整YAML代码如下:

pr: none

trigger:
  branches:
    include:
    - '*'
  
pool:
  vmImage: ubuntu-latest

variables:
  - group: test-variables

stages:
- stage: Build
  displayName: 代码构建阶段
  jobs:
  - job: BuildJob
    steps:
    ######TASK 1 构建任务#######
    - script: Build code
      displayName: 执行代码构建

- stage: Deploy
  displayName: 部署执行阶段
  dependsOn: Build
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
  jobs:
  - job: DeployJob
    steps:
    ####task 2 部署相关任务########
    - script: dir
      workingDirectory: $(Agent.BuildDirectory)/s/azure/terraform
      displayName: 列出Terraform目录内容

配置说明:dependsOn: Build 显式声明部署阶段的前置依赖是构建阶段,succeeded() 函数会自动校验依赖的构建阶段是否执行成功,eq(variables['Build.SourceBranch'], 'refs/heads/master') 是分支匹配规则,两者用and()包裹后就实现了双条件同时满足才运行任务2的要求。

内容的提问来源于stack exchange,提问作者itye1970

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 01:24:32