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

Azure DevOps:如何为步骤列表中的步骤添加条件参数

解决方案

你遇到的是YAML模板结构解析错误,原代码里的循环把步骤键值对展开和condition放在了错误层级,导致解析器无法识别合法的映射结构。正确的做法是把每个循环生成的步骤包装成完整的映射对象,将condition和原步骤的所有属性合并在一起。

推荐写法(用merge函数简化)

- ${{ each step in parameters.preDeleteSteps }}:
  - ${{ merge(step, { condition: 'succeeded()' }) }}

为什么原写法报错?

原代码中,你在each step循环下先嵌套each pair展开键值对,又把condition放在同一层级,这会让YAML解析器认为此处应该是一个序列项,但内部结构既不是完整映射也不是合法序列,因此抛出"Expected a mapping"类错误。

兼容旧版本的手动写法(无法使用merge时)

如果你的环境不支持merge函数,可手动构建完整步骤对象:

- ${{ each step in parameters.preDeleteSteps }}:
  - name: ${{ step.name }}
    displayName: ${{ step.displayName }}
    # 根据实际步骤类型补充属性,比如script、powershell等
    ${{ if ne(step.script, '') }}:
      script: ${{ step.script }}
    condition: succeeded()

merge写法更简洁可靠,会自动将原步骤的所有属性和新增的condition合并为一个合法的步骤映射,完美适配YAML解析规则。

内容的提问来源于stack exchange,提问作者Jason at work

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:18:24