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
相关产品推荐
相关产品推荐

