如何在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
相关产品推荐
相关产品推荐

