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

Azure YAML流水线中如何定义并使用字典类型变量?

解决Azure DevOps YAML流水线定义字典变量的报错问题

报错原因

Azure DevOps的YAML变量系统中,value字段不支持直接嵌套的键值对映射(字典结构),直接在value下写aaa: aaa.zip这类嵌套内容会触发"A mapping was not expected"错误。

实现方法

你可以将字典序列化为JSON字符串来定义这个变量,具体写法如下:

variables:
- template: ../../ci-cd/ado_variables/vars.yml
- template: ../../ci-cd/ado_variables/${{ parameters.vnet }}_vars.yml
- name: files
  value: '{"aaa": "aaa.zip", "bbb": "bbbb.zip"}'

流水线中访问变量的方式

根据使用的脚本环境,解析JSON字符串即可获取字典中的值:

PowerShell脚本中访问

# 将JSON字符串转为PowerShell对象
$files = ConvertFrom-Json '$(files)'

# 访问具体字段
Write-Host "aaa对应的文件:$($files.aaa)"
Write-Host "bbb对应的文件:$($files.bbb)"

Bash脚本中访问(需提前安装jq工具)

# 解析JSON字符串
files=$(echo '$(files)' | jq .)

# 提取具体字段值
aaa_file=$(echo $files | jq -r '.aaa')
bbb_file=$(echo $files | jq -r '.bbb')

echo "aaa对应的文件:$aaa_file"
echo "bbb对应的文件:$bbb_file"

YAML任务中直接引用(结合表达式)

如果是在YAML任务的参数中需要使用,也可以用ADO的表达式解析JSON:

- task: SomeTask@1
  inputs:
    filePath: ${{ fromJson(variables.files).aaa }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:09:53