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

运行Azure Pipeline时如何动态选择指定前缀的变量组?

动态获取Azure Pipeline变量组作为可选配置

可以实现无需硬编码配置选项,自动查找带指定前缀的变量组并动态生成参数可选值,核心是利用Azure DevOps REST API查询变量组,再将结果注入管道参数。

实现步骤

1. 创建动态参数模板文件

新建模板文件dynamic-configs.yml,用于调用REST API过滤符合前缀的变量组:

parameters:
- name: varGroupPrefix
  type: string
  default: 'Config Prefix -'

steps:
- script: |
    # 调用Azure DevOps REST API获取所有变量组
    response=$(curl -s -u :$(System.AccessToken) "${{ variables.System.TeamFoundationCollectionUri }}${{ variables.System.TeamProjectId }}/_apis/distributedtask/variablegroups?api-version=7.1-preview.2")
    
    # 过滤出以指定前缀开头的变量组,提取后缀作为配置名称
    filtered_configs=$(echo "$response" | jq -r '.value[] | select(.name | startswith("${{ parameters.varGroupPrefix }}")) | .name' | sed "s/^${{ parameters.varGroupPrefix }} //" | jq -R . | jq -s .)
    
    # 将结果设置为输出变量,供主管道使用
    echo "##vso[task.setvariable variable=filteredConfigs;isOutput=true]$filtered_configs"
  name: get_var_groups
  displayName: 'Fetch dynamic config variable groups'

2. 修改主管道引用模板并动态生成参数

在主管道中引用上述模板,将动态获取的配置列表作为参数可选值:

# 引用模板获取动态配置列表
extends:
  template: dynamic-configs.yml
  parameters:
    varGroupPrefix: 'Config Prefix -'

# 动态生成配置选择参数
parameters:
- name: configName
  displayName: Configuration
  type: string
  values: ${{ steps.get_var_groups.outputs.filteredConfigs }}

# 根据选中的配置加载对应变量组
variables:
- group: "Config Prefix - ${{ parameters.configName }}"

steps:
- script: |
    echo "--------------------------------"
    echo "Use config for ${{ parameters.configName }}"
    echo "--------------------------------"
    echo "var1: '$(var1)'"
    echo "var2: '$(var2)'"
    echo "var3: '$(var3)'"
    echo "--------------------------------"

关键注意事项

  • 权限配置:确保管道的服务账号拥有读取变量组的权限(在项目设置→权限→变量组权限中配置)
  • OAuth令牌访问:在管道设置中勾选"允许脚本访问OAuth令牌",确保System.AccessToken能被脚本调用
  • 工具依赖:代理需安装jq工具(微软托管代理默认自带,自托管代理需手动安装)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:30:01