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

Azure Pipelines YAML If条件验证失败,请求技术排查

Azure Pipelines YAML 条件判断语法错误排查

报错信息

/azure-pipelines.yml (Line: 64, Col: 16): Expected at least one key-value pair in the mapping
/azure-pipelines.yml (Line: 76, Col: 62): Expected a mapping
/azure-pipelines.yml (Line: 76, Col: 16): Expected at least one key-value pair in the mapping

问题代码片段

name: $(Version.Major).$(Version.Minor).$(Version.Semantic)
trigger:
  branches:
    include:
      - master
      - feature/*
      - bug/*
parameters:
  - name: host
    type: string
    default: 1
    values:
      - 1
      - 2
      - 3
  - name: checkserver
    displayName: 检查服务器是否为Tomcat
    type: boolean
variables:
  
# 错误起始部分
- ${{ if contains(parameters.host, '1_') }}:  
             - task: Maven@3
               inputs:
                 mavenPomFile: pom.xml
                 mavenOptions: '-YAZZ'
                 javaHomeOption: JDKVersion
               
             - ${{ if contains(parameters.host, '_4_') }}:        
             - task: Maven@4
               inputs:
                 mavenPomFile: pom.xml
                 mavenOptions: '-ZYZZ'
                 javaHomeOption: JDKVersion
                 jdkVersionOption: '1.17'
               
               displayName: 编译Maven项目   

错误原因及修复方案

核心是两个YAML语法层级问题:

  1. 嵌套条件缩进错误
    第二个${{ if }}属于第一个条件块的嵌套内容,但当前代码中它和第一个条件下的- task同级,导致解析器认为它是独立的条件块,破坏了层级结构。

  2. 条件块无有效内容
    - ${{ if }}:冒号后必须缩进并跟随映射/列表内容,第二个条件下的- task没有缩进在条件范围内,导致条件块为空,触发"Expected at least one key-value pair"错误。

修复后的代码

name: $(Version.Major).$(Version.Minor).$(Version.Semantic)
trigger:
  branches:
    include:
      - master
      - feature/*
      - bug/*
parameters:
  - name: host
    type: string
    default: 1
    values:
      - 1
      - 2
      - 3
  - name: checkserver
    displayName: 检查服务器是否为Tomcat
    type: boolean
variables:
  
# 修复后的条件块
- ${{ if contains(parameters.host, '1_') }}:  
  - task: Maven@3
    inputs:
      mavenPomFile: pom.xml
      mavenOptions: '-YAZZ'
      javaHomeOption: JDKVersion
   
  # 嵌套条件缩进至父条件同级,确保属于父条件块内容
  - ${{ if contains(parameters.host, '_4_') }}:        
    - task: Maven@4
      inputs:
        mavenPomFile: pom.xml
        mavenOptions: '-ZYZZ'
        javaHomeOption: JDKVersion
        jdkVersionOption: '1.17'
      displayName: 编译Maven项目   

额外提示

  • 当前host参数值为1/2/3,但条件判断的是'1_'和'_4_',永远无法匹配,需根据实际业务调整参数值或条件字符串。
  • YAML缩进严格统一(建议用2个空格),避免混用空格和制表符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:52:45