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

Azure DevOps Pipeline多矩阵选项交叉乘积配置实现方法

Azure DevOps 管道多维度矩阵交叉乘积实现方案

Azure DevOps 原生的静态 matrix 配置不支持直接定义维度列表自动计算笛卡尔积,不需要手动逐行写配置的话,有两种成熟的实现方式:

方案1:原生YAML+脚本动态生成矩阵

不需要安装任何扩展,利用管道参数、输出变量和运行时表达式即可实现,步骤如下:

  1. 先把各维度的可选值定义为对象类型的管道参数,方便后续统一维护
parameters:
- name: imageList
  type: object
  default:
    - 'windows-latest'
    - 'ubuntu-latest'
- name: jdkList
  type: object
  default:
    - '1.10'
    - '1.11'
- name: optionList
  type: object
  default:
    - 'a'
    - 'b'
    - 'c'
  1. 增加一个前置作业,用脚本计算所有维度的交叉乘积,生成符合matrix格式的JSON对象,通过输出变量传递给后续作业
  2. 实际执行任务的作业直接引用动态生成的矩阵变量即可,完整示例:
stages:
- stage: Build
  jobs:
  - job: GenerateMatrix
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - pwsh: |
        $matrix = @{}
        # 多层循环计算笛卡尔积
        foreach ($image in ${{ parameters.imageList }}) {
          foreach ($jdk in ${{ parameters.jdkList }}) {
            foreach ($opt in ${{ parameters.optionList }}) {
              # 拼接唯一的矩阵项key,不要包含特殊字符
              $jobKey = "jdk$($jdk.Replace('1.',''))_$($image.Replace('-latest',''))_opt$opt"
              $matrix[$jobKey] = @{
                imageName = $image
                jdkVersion = $jdk
                someOption = $opt
              }
            }
          }
        }
        $matrixJson = $matrix | ConvertTo-Json -Compress
        # 输出为跨作业可引用的变量
        Write-Host "##vso[task.setvariable variable=dynamicMatrix;isOutput=true]$matrixJson"
      name: matrixGenStep

  - job: RunBuildTest
    dependsOn: GenerateMatrix
    # 直接解析动态生成的矩阵作为执行策略
    strategy:
      matrix: $[ convertFromJson(dependencies.GenerateMatrix.outputs['matrixGenStep.dynamicMatrix']) ]
    # 矩阵里的变量会自动注入到当前作业上下文,可直接给pool字段引用
    pool:
      vmImage: $(imageName)
    steps:
    - script: |
        echo "当前运行环境镜像:$(imageName)"
        echo "使用JDK版本:$(jdkVersion)"
        echo "自定义选项值:$(someOption)"

注意:该方案要求使用Azure DevOps Services云服务,或Azure DevOps Server 2020及以上本地版本,旧版本不支持在strategy字段中解析运行时JSON变量。

方案2:使用矩阵生成扩展任务

如果不想自己手写笛卡尔积计算脚本,可以安装官方维护的矩阵生成任务扩展,安装后直接在管道里配置各维度的取值列表,任务会自动计算全量交叉组合生成矩阵配置,不需要手写循环逻辑,维护成本更低。

使用注意事项

  • 矩阵项的key不要包含空格、特殊符号,建议只用字母、数字、下划线拼接,避免管道解析报错
  • 如果各维度组合总数量较大,记得提前调整管道并行作业配额,避免触发作业数量上限拦截
  • 如果需要排除部分无效组合,可以在生成矩阵的脚本里加判断逻辑过滤,不需要生成全量后再跳过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:16:01