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

如何在Azure DevOps YAML流水线中使用嵌套each循环

YAML流水线嵌套对象参数的each循环实现方案

你提供的是两层嵌套的字典结构参数,第一层为区域标识,第二层为对应区域下的测试项配置,以下是Azure DevOps流水线场景下的实现方式:

1. 保留区域+测试项信息的完整遍历

如果需要同时获取区域名称、测试项名称、文件夹路径三个维度的信息,使用双循环写法:

parameters:
  - name: parameter1
    type: object
    default:
      IN:
        Test1:
          folderPath: abc/myFolder1
        Test2:
          folderPath: abc/myFolder2     
        Test3:
          folderPath: abc/myFolder3
      US:
        Test4:
          folderPath: xyz/myFolder4
      CA:
        Test5:
          folderPath: lmn/myFolder5

steps:
# 第一层遍历:循环所有区域(IN/US/CA)
- ${{ each regionKey, regionVal in parameters.parameter1 }}:
  - script: echo 正在处理区域:${{ regionKey }}
    displayName: 处理区域_${{ regionKey }}
  # 第二层遍历:循环当前区域下的所有测试项
  - ${{ each testKey, testVal in regionVal }}:
    - script: |
        echo 测试项名称:${{ testKey }}
        echo 对应文件夹路径:${{ testVal.folderPath }}
      displayName: 处理${{ regionKey }}_${{ testKey }}

2. 仅遍历获取所有文件夹路径

如果只需要提取所有folderPath值,不需要区域和测试项名称,可简化为:

steps:
- ${{ each region in parameters.parameter1 }}:
  - ${{ each testItem in region }}:
    - script: echo 文件夹路径:${{ testItem.folderPath }}
      displayName: 处理路径_${{ testItem.folderPath }}

注意:上述${{ }}包裹的是Azure DevOps的模板表达式,循环逻辑会在流水线编译阶段直接展开为对应数量的步骤,运行阶段不会保留循环结构。如果是其他流水线平台,需替换为对应平台的循环语法,比如GitHub Actions使用matrix矩阵配置实现类似效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:54:01