为啥将其放入模板 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
,则只有trigger
、pr
、schedule
和resources
可以与extends
一起出现在顶层。
如果管道模板将成为extends
的目标,则它必须至少指定jobs
级别。
【讨论】:
以上是关于为啥将其放入模板 yaml 文件时显示 Unexpected value 'pool' 错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Vue 路由器/Webpack 开发服务器现在在页面刷新时显示无法获取/路径?
为啥 Xcode 在 appdelegate.h 文件中使用 AVAudioPlayer Delegate 协议时显示警告?
为啥 Windows 任务管理器在写入非常大的文件时显示内存增加?我应该担心吗? [关闭]