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

如何在Azure Pipeline中无需PowerShell读取仓库JSON值存为流水线变量

实现方案

你可以通过Linux/macOS代理内置的jq工具或者Python完成JSON解析,完全不需要使用PowerShell,步骤如下:


方案1:使用jq解析(推荐)

Azure DevOps提供的默认Ubuntu/macOS代理都预装了jqJSON解析工具,直接使用即可:

  1. 确认流水线使用Linux或macOS类型的代理
  2. 添加Bash任务读取JSON并设置为流水线变量,示例完整流水线YAML如下:
trigger:
- '*' # 匹配你现有的全分支触发规则

pool:
  vmImage: 'ubuntu-latest'

steps:
- bash: |
    # 读取JSON字段值,-r参数用于输出无引号的原始字符串
    KEY1_VAL=$(jq -r '.key1' file.json)
    KEY2_VAL=$(jq -r '.key2' file.json)
    # 写入流水线变量,后续任务可直接通过$(key1)、$(key2)引用
    echo "##vso[task.setvariable variable=key1]$KEY1_VAL"
    echo "##vso[task.setvariable variable=key2]$KEY2_VAL"
  displayName: '解析file.json并设置流水线变量'

# 测试变量是否生效,正式使用时可删除该步骤
- bash: |
    echo "key1取值为:$(key1)"
    echo "key2取值为:$(key2)"
  displayName: '验证JSON变量读取结果'

方案2:使用Python解析(无jq环境可选)

如果你的代理环境无法使用jq,可以用默认预装的Python实现解析,替换上面的Bash任务内容即可:

python3 -c "
import json
with open('file.json', encoding='utf-8') as f:
    config = json.load(f)
print(f'##vso[task.setvariable variable=key1]{config[\"key1\"]}')
print(f'##vso[task.setvariable variable=key2]{config[\"key2\"]}')
"

注意事项

  • 如果file.json不在仓库根目录,需要替换代码中的file.json为实际相对路径,例如./src/config/file.json
  • 如果需要跨阶段使用读取到的变量,设置变量时添加isOutput=true参数,同时给Bash任务设置name属性,后续阶段通过dependencies.阶段名.outputs['任务名.变量名']引用即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:07