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

Azure Pipelines中Python脚本间传递字符串列表变量问题

解决Azure Pipelines中Python脚本传递列表变量的问题

问题根源

Azure Pipelines的所有流水线变量本质都是字符串类型,无法直接存储Python列表对象。你第一步设置的['csharp', 'java']实际会被当作普通字符串传递,后续脚本用os.environ.get()拿到的只是这个字符串,而非可直接使用的列表。

解决方案

通过JSON序列化/反序列化来传递结构化数据:

1. 第一步脚本:将列表转为JSON字符串后设置变量

import json
import os

# 假设从API获取的列表
repo_languages = ['csharp', 'java']
# 序列化为JSON字符串
languages_json = json.dumps(repo_languages)
# 设置流水线变量
print(f"##vso[task.setvariable variable=REPO_LANGUAGES]{languages_json}")

2. 后续脚本:读取JSON字符串并反序列化为列表

import os
import json

# 获取环境变量中的JSON字符串
languages_str = os.environ.get('REPO_LANGUAGES')
# 反序列化为Python列表
if languages_str:
    repo_languages = json.loads(languages_str)
    # 现在可以正常使用列表操作,比如遍历
    for lang in repo_languages:
        print(f"处理语言:{lang}")
else:
    # 处理变量不存在的情况
    repo_languages = []

替代方案(简单场景)

如果只是简单的字符串列表,也可以用逗号分隔字符串传递:

  • 第一步设置变量:print(f"##vso[task.setvariable variable=REPO_LANGUAGES]{','.join(repo_languages)}")
  • 后续脚本读取:repo_languages = languages_str.split(',') if languages_str else []

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:00:58