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

Azure DevOps YAML传递数组参数报错:未找到'repos'键

问题分析与修复

报错Key not found 'repos'的核心原因有两个:

  • 模板文件template.yml未定义repos参数,导致调用时传入的参数无法被识别
  • batch.yml中传递参数的格式不符合Azure DevOps Pipeline的语法规范

1. 修复template.yml:添加repos参数

在template.yml的parameters部分新增repos参数,类型指定为字符串数组:

parameters:
- name: branchName
  type: string
  default: ''
- name: repos
  type: string[]  # 定义为字符串数组类型
  default: []     # 设置默认空数组

steps:
- ${{ each repo in parameters.repos }}:
  - task: TriggerPipeline@1
    displayName: 'Trigger Azure DevOps Pipeline: Build'
    inputs:
      serviceConnection: 'Azure_DevOps_API_Connection'
      project: ABC
      Pipeline: 'Build'
      buildDefinition: '${{ repo }}-build-k8s'
      buildRepo: '${{ repo }}'
      Branch: '${{ parameters.branchName }}'

  - task: Bash@3
    inputs:
      targetType: 'inline'
      script: 'sleep 120'

2. 修正batch.yml:参数传递格式

Azure DevOps Pipeline调用模板时,参数传递不需要用- name:的列表形式,直接以键值对赋值即可,同时注意缩进规范:

# batch.yml
trigger:
- d94-Develop
pool:
  vmImage: 'windows-latest'

## ESSA Prod Websites ##

steps:
- template: template.yml
  parameters:
    branchName: $(Build.SourceBranchName)  # 直接赋值字符串
    repos:                                 # 赋值数组
    - 'app-essa-abc-fr'
    - 'app-essa-abc-tr'

关键说明

  • 模板必须先定义参数才能接收传入的值,否则会触发"Key not found"错误
  • 调用模板时的parameters块是键值对结构,不是参数定义的列表结构,这是Azure DevOps Pipeline的语法要求
  • 数组类型参数传递时,保持缩进层级一致即可正确识别

内容的提问来源于stack exchange,提问作者Devops-Learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:12:42