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

如何在Windows和Linux代理的Azure DevOps中导入JSON为变量?

跨平台读取JSON文件为Azure DevOps流水线变量的通用方案

以下两种方案均兼容Windows和Linux代理,且Azure DevOps托管代理默认预装对应运行环境:

方案1:使用Python脚本

  1. 准备读取JSON的Python脚本(示例命名为load_json_vars.py):
import json

# 读取JSON文件,替换为你的文件路径
with open('config.json', 'r', encoding='utf-8') as f:
    config_data = json.load(f)

# 递归扁平化嵌套JSON并设置变量
def set_variables(data, prefix=""):
    for key, value in data.items():
        var_name = f"{prefix}.{key}" if prefix else key
        if isinstance(value, dict):
            set_variables(value, var_name)
        else:
            # 输出Azure DevOps变量设置指令
            print(f"##vso[task.setvariable variable={var_name};]{value}")

set_variables(config_data)
  1. 在Azure DevOps流水线中添加Python script任务,指定运行上述脚本即可。

方案2:使用Node.js脚本

  1. 准备读取JSON的Node.js脚本(示例命名为load_json_vars.js):
const fs = require('fs');

// 读取JSON文件,替换为你的文件路径
const configData = JSON.parse(fs.readFileSync('config.json', 'utf8'));

// 递归扁平化嵌套JSON并设置变量
function setVariables(data, prefix = "") {
    Object.entries(data).forEach(([key, value]) => {
        const varName = prefix ? `${prefix}.${key}` : key;
        if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
            setVariables(value, varName);
        } else {
            // 输出Azure DevOps变量设置指令
            console.log(`##vso[task.setvariable variable=${varName};]${value}`);
        }
    });
}

setVariables(configData);
  1. 在Azure DevOps流水线中添加Node.js任务,指定运行上述脚本即可。

注意事项

  • 若需将变量设为输出变量供后续任务引用,可在指令中添加isOutput=true,例如:##vso[task.setvariable variable={var_name};isOutput=true;]{value}
  • 若JSON包含数组类型数据,可根据需求调整脚本逻辑(如转为字符串存储)
  • 确保JSON文件路径与流水线工作目录匹配,必要时使用绝对路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:50:37