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

Azure DevOps Pipeline YAML报错:Unexpected value 'Agent' 求助

解决Azure Pipelines YAML中的"Unexpected value 'Agent'"错误

错误原因

错误出在CreateProject任务的variables配置块中:${{ if }}条件语句没有正确缩进在variables:下方,导致YAML解析器将Agent识别为job的顶级属性(而非变量),触发语法错误。

修复后的完整YAML代码

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

parameters:
- name: env
  displayName: Environment
  default: DEV
  values:
  - DEV
  - ZA_SIT
  - AF_SIT
  - MAH_PROD
  - SA_PROD
- name: ser
  displayName: Server
  default: ESB
  values:
  - ESB
- name: branch
  displayName: Checkout Branch
  default: Dev
  values:
  - Dev
  - sit_mah
  - sit_sa
  - prod_mah
  - prod_sa
- name: packages
  displayName: Packages to Deploy:- 
      Specify "none" to deploy all packages,
      To deploy multiple packages specify them "," seperated
  default: none
- name: connectors
  displayName: Connectors to Deploy:- 
    To deploy multiple connectors specify them "," seperated
  default: none
  
- name: connvs
  displayName: Connectors Variable Substitution
  type: boolean
  default: false

- name: checkDep
  displayName: Check serviceDependencies:- 
    Specify "full" if "Packages to Deploy" is "none"
  default: ignore
  values:
  - full
  - partial
  - ignore

trigger: none
jobs:


- job: Checkout
  variables:
   ${{ if eq(parameters.env, 'DEV') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'ZA_SIT') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'AF_SIT') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'SA_PROD') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'MAH_PROD') }}:
     Agent: onprem_webMethods
  pool:
    name: 'ESB_webMethods'
    demands: Agent.Name -equals ${{ variables.Agent }}
  steps:
  - checkout: git://EBS/OnPrem_webMethods@${{ parameters.branch }}
    submodules: 'recursive'
    clean: true
    path: workspace
    persistCredentials: true
  - bash: |
      BuildPath="$(Agent.BuildDirectory)"
      echo "This is build location $BuildPath"
      echo "##vso[task.setvariable variable=buildPath;isOutput=true;]$BuildPath"
    name: setVariable

            


- job: Build

  dependsOn: Checkout
  condition: succeeded('Checkout')
  
  variables:
   buildPath: $[ dependencies.Checkout.outputs['setVariable.buildPath'] ]
   ${{ if eq(parameters.env, 'DEV') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'ZA_SIT') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'AF_SIT') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'SA_PROD') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'MAH_PROD') }}:
     Agent: onprem_webMethods

  pool: 
   name: 'ESB_webMethods' 
   demands: Agent.Name -equals ${{ variables.Agent }}

  steps:
  - checkout: none
  - script: "/softwareag/wm107/common/AssetBuildEnvironment/bin/build.sh -Denable.build.IS=true -Dis.acdl.config.dir=$(buildPath)/workspace/OnPrem_webMethods/IS/packages/acdl/config${{ parameters.ser }}/${{ parameters.env }}/ -Dbuild.source.dir=$(buildPath)/workspace/OnPrem_webMethods/IS/packages/IS -Dbuild.output.dir=$(OutDir)"
    name: BuildScript


- job: CreateProject

  dependsOn: 
  - Checkout
  - Build
  condition: succeeded('Build')
  variables:
   buildPath: $[ dependencies.Checkout.outputs['setVariable.buildPath'] ]
   ${{ if eq(parameters.env, 'DEV') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'ZA_SIT') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'AF_SIT') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'SA_PROD') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'MAH_PROD') }}:
     Agent: onprem_webMethods
  pool: 
   name: 'ESB_webMethods'
   demands: Agent.Name -equals ${{ variables.Agent }}
  steps:
  - checkout: none

  - bash: |
     chmod 764 $(buildPath)/workspace/OnPrem_webMethods/IS/scripts/${{ parameters.ser }}/${{ parameters.env }}/buildAutomater.sh
     $(buildPath)/workspace/OnPrem_webMethods/IS/scripts/${{ parameters.ser }}/${{ parameters.env }}/buildAutomater.sh -p=${{ parameters.packages }} -c=${{ parameters.connectors }} -f=$(buildPath)/workspace/OnPrem_webMethods/IS/scripts/${{ parameters.ser }}/${{ parameters.env }}/IS_ProjectAutomator.xml -d=${{ parameters.checkDep }}
    name: BuildProjectAutomater
  - script: "/softwareag/wm107/IntegrationServer/instances/default/packages/WmDeployer/bin/projectautomatorUnix.sh $(buildPath)/workspace/OnPrem_webMethods/IS/scripts/${{ parameters.ser }}/${{ parameters.env }}/IS_ProjectAutomator.xml"
    name: CreateDeployerProject
  
  - bash: |
      if [ ${{ parameters.connvs }} == False ]
        then 
        echo "No Variable Substution"
        else
         cp $(buildPath)/workspace/OnPrem_webMethods/IS/scripts/${{ parameters.ser }}/${{ parameters.env }}/_WMRepo_DepMap.vs /softwareag/wm107/IntegrationServer/instances/default/packages/WmDeployer/replicate/inbound/WMRepo_WMRepo_DepMap.vs
         /softwareag/wm107/IntegrationServer/instances/default/packages/WmDeployer/bin/Deployer.sh --import -varsub --vsFile WMRepo_WMRepo_DepMap.vs -map WMRepo_DepMap -project WMRepo -host $(${{ parameters.env }}_deployerServer) -port $(${{ parameters.env }}_deployerPort) -user $(${{ parameters.env }}_username) -pwd $(${{ parameters.env }}_pwd)
      fi
    name: ImportConnectorsVS


- job: Deploy

  dependsOn: CreateProject
  condition: succeeded('CreateProject')
  variables:
   ${{ if eq(parameters.env, 'DEV') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'ZA_SIT') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'AF_SIT') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'SA_PROD') }}:
     Agent: onprem_webMethods
   ${{ if eq(parameters.env, 'MAH_PROD') }}:
     Agent: onprem_webMethods
  pool:
    name: 'ESB_webMethods'
    demands: Agent.Name -equals ${{ variables.Agent }}
  steps:
  - checkout: none
  - script: "/softwareag/wm107/IntegrationServer/instances/default/packages/WmDeployer/bin/Deployer.sh --deploy -dc WMTokenEngine_DepCand -project WMTokenEngine -host $(${{ parameters.env }}_deployerServer) -port $(${{ parameters.env }}_deployerPort) -user $(${{ parameters.env }}_username) -pwd $(${{ parameters.env }}_pwd)"
    name: DeployComposits

关键修复说明

将CreateProject任务中所有${{ if }}开头的变量定义,缩进至与buildPath变量同级,确保它们属于variables块的子元素,YAML解析器就能正确识别Agent是变量而非job的非法属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:08:14