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

如何在Azure DevOps YAML管道中遍历用户自定义变量?

问题原因

你当前使用的 ${{ each }} 是编译时模板表达式,仅能识别在YAML文件中定义的变量、以及系统预定义的编译时变量。通过Azure DevOps UI创建的用户自定义变量属于运行时变量,在编译阶段还未被注入到变量上下文,因此无法被编译时表达式遍历到。

可行解决方案

方案1:运行时通过环境变量遍历(推荐)

所有运行时变量(包括UI定义的自定义变量)在任务执行阶段都会自动注入到任务的环境变量中,直接通过shell脚本读取环境变量即可,不需要依赖编译时表达式。
替换原有steps段代码如下:

steps:
- script: |
    # 打印所有环境变量,UI定义的自定义变量也会在输出列表中
    env
    # 如需过滤系统变量,仅保留自定义变量,可添加过滤规则,示例如下:
    echo "===== 过滤后的自定义变量 ====="
    env | grep -vE "^(SYSTEM_|BUILD_|AGENT_|RELEASE_|TASK_)"
  displayName: 遍历所有运行时变量(含UI自定义变量)

注意:标记为保密的UI变量不会明文出现在输出中,Azure DevOps会自动对保密变量的值做掩码处理。

方案2:显式声明UI变量到YAML变量上下文

如果需要在编译时逻辑中使用UI自定义变量,可以在YAML的variables段显式引用UI变量,声明后即可被 ${{ each }} 识别:

# 顶部variables段显式声明UI中定义的自定义变量,值留空即可,运行时会自动读取UI配置的数值
variables:
  你的UI自定义变量名1: 
  你的UI自定义变量名2: 

# 后续stages、job逻辑保持不变,原有${{ each }}遍历逻辑即可识别上述声明的变量

该方案的局限性是需要提前知晓UI变量的名称,无法动态适配后续新增的UI变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:36:09