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

如何在Azure DevOps Pipeline中同时多次运行带不同变量值的任务

Azure DevOps Pipeline并行多实例带不同变量实现方案

方案1:Job策略+变量矩阵(Matrix)

这是Azure DevOps原生支持的批量并行方案,适合提前确定变量组合的场景,每个矩阵项对应一个独立Job,自动并行执行。

配置方式:

在Pipeline YAML中定义strategy.matrix,列出所有变量组合,每个Job自动继承对应变量:

jobs:
- job: RunSeleniumTests
  strategy:
    matrix:
      Env1_UserA:
        TEST_ENV: 'staging-1'
        TEST_USER: 'user_a@example.com'
      Env2_UserB:
        TEST_ENV: 'staging-2'
        TEST_USER: 'user_b@example.com'
      Env3_UserC:
        TEST_ENV: 'sandbox'
        TEST_USER: 'user_c@example.com'
    maxParallel: 3 # 限制并行Job数量,根据Agent容量调整
  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.9'
  - script: |
      pip install selenium webdriver-manager
      python run_selenium_tests.py --env $(TEST_ENV) --user $(TEST_USER)
    displayName: '执行Selenium自动化任务'

方案2:任务模板+并行Job循环

如果变量需要动态生成(比如从文件、API获取),可以用模板复用任务逻辑,再通过循环生成并行Job。

步骤:

  1. 编写可复用的任务模板(示例:selenium-job-template.yml):
parameters:
  - name: testEnv
    type: string
  - name: testUser
    type: string

jobs:
- job: SeleniumTest_${{ parameters.testEnv }}_${{ parameters.testUser }}
  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.9'
  - script: |
      pip install selenium webdriver-manager
      python run_selenium_tests.py --env ${{ parameters.testEnv }} --user ${{ parameters.testUser }}
    displayName: '在${{ parameters.testEnv }}环境执行,用户:${{ parameters.testUser }}'
  1. 主Pipeline中引用模板并循环生成Job:
variables:
  - name: testCases
    value: |
      [
        {"env": "staging-1", "user": "user_a"},
        {"env": "staging-2", "user": "user_b"},
        {"env": "staging-3", "user": "user_c"}
      ]

jobs:
- ${{ each case in convertToJson(variables.testCases) }}:
  - template: selenium-job-template.yml
    parameters:
      testEnv: ${{ case.env }}
      testUser: ${{ case.user }}

方案3:参数化Pipeline+批量触发

如果需要手动或外部系统触发多个独立Pipeline实例,可配置参数化Pipeline,再通过CLI/API批量发起运行请求。

配置参数化Pipeline:

parameters:
  - name: testEnv
    type: string
    default: 'staging'
  - name: testUser
    type: string
    default: 'default_user'

jobs:
- job: RunSelenium
  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.9'
  - script: |
      pip install selenium webdriver-manager
      python run_selenium_tests.py --env ${{ parameters.testEnv }} --user ${{ parameters.testUser }}
    displayName: '执行参数化Selenium任务'

批量触发脚本(Bash):

# 定义变量组合
test_cases=(
  "staging-1 user_a"
  "staging-2 user_b"
  "staging-3 user_c"
)

# 循环触发Pipeline实例
for case in "${test_cases[@]}"; do
  read env user <<< "$case"
  az pipelines run \
    --name "你的Selenium流水线名称" \
    --organization "https://dev.azure.com/你的组织名" \
    --project "你的项目名" \
    --parameters testEnv="$env" testUser="$user" &
done

wait # 等待所有触发请求完成

关键注意点:

  • 确保Agent池有足够的并行作业配额,避免任务排队
  • Selenium任务需保证隔离性,比如每个实例使用独立浏览器会话,避免资源冲突
  • 云Agent并行运行时注意成本控制

内容的提问来源于stack exchange,提问作者Med Foued Jenni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:15:36