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

如何在Azure DevOps中创建数组变量并实现任务循环执行

解决Azure DevOps Pipeline循环任务的数组传递问题

1. 主Pipeline中定义数组变量并传递给模板

Azure DevOps YAML里直接定义数组变量要用YAML数组格式,不能用空格分隔的字符串。同时传递参数给模板时,要使用编译时表达式${{ variables.abc }}(而非运行时的$(abc)),这样模板才能在编译阶段正确识别数组结构。

修改后主Pipeline代码:

pool:
  vmImage: 'windows-latest'

parameters:
- name: environment
  displayName: 'Select Environment To Deploy'
  type: string
  values:
    - A1
    - A2
  default: A1

variables:
- name: abc
  value: ['firm20', 'firm201'] # 用YAML数组格式声明变量

stages:
- stage: stage01
  displayName: 'Deploy in Environment '
  jobs:
  - template: templates/test_task_for.yml
    parameters:
      list: ${{ variables.abc }} # 用编译时表达式传递数组参数

2. 模板Pipeline的参数设置与循环逻辑

模板里的参数类型要设为object(YAML数组属于object类型范畴),默认值设为[]是正确的。循环时要遍历模板接收的parameters.list,而非主Pipeline的变量。

修改后模板代码:

parameters:
- name: list
  type: object # 数组对应object类型
  default: [] # 默认空数组,设置正确

jobs:
- job: connectxyz
  displayName: 'Connect'
  steps: 
  - ${{each mc in parameters.list}}: # 遍历模板接收的数组参数
    - task: CmdLine@2
      inputs:
        script: 'echo Write your commands here. ${{mc}}' 

关键说明

  • 编译时表达式${{ ... }}用于模板渲染阶段,能完整传递数组结构;运行时变量$(...)仅在Pipeline运行时解析,无法传递数组给模板。
  • 模板参数用object类型可接收数组、字典等复杂结构,完全适配数组循环需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:35:23