如何加载作业级JSON数据并作为参数在模板中查询引用?
加载并查询JSON数据作为Pipeline输入参数的方法
步骤1:读取JSON文件并存储为作业级变量
在你的作业中添加步骤,将JSON文件内容读取并设置为作业作用域的变量,可选择PowerShell或Bash任务实现:
PowerShell示例:
# 读取目标JSON文件内容 $jsonContent = Get-Content -Path 'config.json' -Raw # 将内容设置为作业级变量 Write-Host "##vso[task.setvariable variable=jsonConfig;]$jsonContent"
Bash示例:
# 读取目标JSON文件内容 jsonContent=$(cat config.json) # 将内容设置为作业级变量 echo "##vso[task.setvariable variable=jsonConfig;]$jsonContent"
步骤2:在模板引用中解析JSON并动态取值
使用Pipeline的convertJson表达式函数,将变量中的JSON字符串转为可访问的对象,再结合传入的参数动态提取对应值:
- template: 'templates/deploySomething.yml' parameters: subscriptionId: ${{ convertJson(variables.jsonConfig)[parameters.api].subscriptionId[parameters.stage] }}
关键注意事项
- 保证JSON格式有效:你提供的示例JSON中
"test": "5678",末尾的多余逗号需删除,否则会引发解析错误。 - 文件路径准确性:指定JSON文件路径时,要确保作业的工作目录能访问到该文件(仓库内文件使用相对路径即可)。
- 表达式语法要求:必须用
${{ }}包裹解析逻辑,确保Pipeline运行时能正确解析变量与参数的组合关系。
内容的提问来源于stack exchange,提问作者heycaptain
相关产品推荐
相关产品推荐

