为啥将其放入模板 yaml 文件时显示 Unexpected value 'pool' 错误?

Posted

技术标签:

【中文标题】为啥将其放入模板 yaml 文件时显示 Unexpected value \'pool\' 错误?【英文标题】:Why showing Unexpected value 'pool' error when put it into a template yaml file?为什么将其放入模板 yaml 文件时显示 Unexpected value 'pool' 错误? 【发布时间】:2020-12-22 01:09:21 【问题描述】:

我正在尝试学习 azure devops yaml 并使用模板。

这是我的管道yaml(基本上是想设置一个参数并调用一个模板文件):

trigger:
 branches:
   include:
     - master
 paths:
   exclude:
      - YAML/*

extends:
  template: azure-pipeline.yaml
  parameters:
      MergeSprintToMaster: false 

这是我的模板文件 azure-pipeline.yaml,其中包含所有常见的东西:

parameters:
- name: MergeSprintToMaster # name of the parameter; required
  type: boolean # data type of the parameter; required
  default: false

pool:
  name: Azure Pipelines
  vmImage: 'windows-latest'
  demands:
  - msbuild
  - visualstudio
  - vstest

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU' 
  buildConfiguration: 'Release'

steps:
- task: AzureCLI@2

我收到一个验证错误,提示 /YAML/azure-pipeline.yaml (Line: 11, Col: 1): Unexpected value 'pool'

我尝试使用 yaml 的方式有什么问题?

【问题讨论】:

【参考方案1】:

当模板以extends 为目标时,您的模板中显然不能包含pool ***。 见https://developercommunity.visualstudio.com/content/problem/992713/unexpected-value-pool-when-extending-a-template.html和https://github.com/microsoft/azure-pipelines-yaml/issues/430

改用以下内容:

parameters:
- name: MergeSprintToMaster # name of the parameter; required
  type: boolean # data type of the parameter; required
  default: false

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU' 
  buildConfiguration: 'Release'
jobs:
- job:
  pool:
    name: Azure Pipelines
    vmImage: 'windows-latest'
    demands:
    - msbuild
    - visualstudio
    - vstest

  steps:
  - task: AzureCLI@2

【讨论】:

【参考方案2】:

产品团队已确认当前pool 在顶层管道使用扩展时不能包含在该管道中:

https://github.com/MicrosoftDocs/azure-devops-docs/issues/7972#issuecomment-618988624

extends 目前需要显式的 jobs:stages: 包装器,即使是在单个作业的情况下也是如此。两条规则是:

    如果管道包含extends,则只有triggerprscheduleresources 可以与extends 一起出现在顶层。 如果管道模板将成为extends 的目标,则它必须至少指定jobs 级别。

【讨论】:

以上是关于为啥将其放入模板 yaml 文件时显示 Unexpected value 'pool' 错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 jQuery FileTree 在未设置时显示文件?

为啥 Vue 路由器/Webpack 开发服务器现在在页面刷新时显示无法获取/路径?

为啥 Xcode 在 appdelegate.h 文件中使用 AVAudioPlayer Delegate 协议时显示警告?

为啥 Windows 任务管理器在写入非常大的文件时显示内存增加?我应该担心吗? [关闭]

在 SwiftUI 中导出文件时显示 ProgressView

哪位吉他高手能告诉我为啥我的guitar pro 6安了音乐库后打开GTP文件时显示载入错误,麻烦指点指点,谢谢