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

如何将Variable Group作为字典整体传入Python脚本

方法1:通过环境变量遍历(无需额外配置,推荐)

链接到管道的Variable Group内的非加密变量,运行时会自动转换为任务进程的环境变量:变量名自动转全大写,.自动替换为_。
你只需要给目标Variable Group内的所有变量加统一前缀(比如MY_VG_),就可以在Python中直接过滤环境变量拿到整组内容:

- task: PythonScript@0
  inputs:
    scriptSource: 'inline'
    script: |
      import os
      # 替换为你的变量组统一前缀
      vg_prefix = "MY_VG_"
      vg_dict = {}
      for env_key, env_val in os.environ.items():
          if env_key.startswith(vg_prefix):
              original_key = env_key.removeprefix(vg_prefix).lower()
              vg_dict[original_key] = env_val
      # 直接遍历使用
      for k, v in vg_dict.items():
          print(f"{k}: {v}")

注意:加密的Secret变量默认不会自动注入环境变量,需要你在任务的env字段显式映射才能读取:

- task: PythonScript@0
  inputs:
    scriptSource: 'inline'
    script: |
      import os
      print("secret值:", os.getenv("MY_SECRET"))
  env:
    MY_SECRET: $(你变量组内的secret变量名)

方法2:调用DevOps API拉取完整变量组(无需给变量加前缀)

如果不想修改变量组内的变量名加前缀,可以在管道中先调用Azure DevOps CLI拉取变量组的完整结构,转成JSON后传给Python解析:

# 先拉取变量组内容存为管道变量
- task: AzureCLI@2
  inputs:
    azureSubscription: '你的Azure DevOps服务连接名'
    scriptType: 'bash'
    inlineScript: |
      # 替换为你的项目名、变量组名
      vg_json=$(az pipelines variable-group show --group-name "你的变量组名" --project "你的项目名" -o json)
      echo "##vso[task.setvariable variable=VG_JSON]$vg_json"

# Python脚本直接解析JSON
- task: PythonScript@0
  inputs:
    scriptSource: 'inline'
    script: |
      import json, os
      vg_data = json.loads(os.getenv("VG_JSON"))
      # 提取所有非加密变量
      vg_dict = {k: v["value"] for k, v in vg_data["variables"].items() if not v.get("isSecret")}
      print(vg_dict)

该方法需要给管道的服务账号开通对应变量组的读取权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:48:04