azure-pipelines - YAML 抱怨“意外的属性扩展”
问题描述
我正在调查我们如何确保我们的 YAML 管道使用相同的步骤来执行例如单元测试的验证。我已经设置了几个环境,我认为我可以使用关于“必需模板”的“批准和检查”功能。
我实际上认为这会非常简单 - 但我无法让解析器/运行器引擎接受我的“扩展”配置。
我的 YAML 管道是这样的:
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- script: echo Building!
- stage: Test
jobs:
- job: TestOnWindows
steps:
- script: echo Testing on Windows!
- job: TestOnLinux
steps:
- script: echo Testing on Linux!
- deployment: DeployToTest
environment: 'Test'
- stage: Deploy
jobs:
- job: Deploy
steps:
- script: echo Deploying the code!
- deployment: DeployToProd
environment: 'Prod'
它真的什么也没做——除了处理几个阶段并批准相关环境的使用。
我以为我可以简单地extends
在顶部添加属性 - 像这样:
extends:
template: resource-template.yml
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- script: echo Building!
- stage: Test
jobs:
- job: TestOnWindows
steps:
- script: echo Testing on Windows!
- job: TestOnLinux
steps:
- script: echo Testing on Linux!
- deployment: DeployToTest
environment: 'Test'
- stage: Deploy
jobs:
- job: Deploy
steps:
- script: echo Deploying the code!
- deployment: DeployToProd
environment: 'Prod'
我的resource-template.yml
文件是这个
# File: resource-template.yml
# steps:
#- script: echo Echoing from template!
换句话说 - 它完全是空的。
注意:这可以由错误的原因引起吗?我不能从空模板扩展?该文档对扩展管道的要求有点模糊。我还尝试向扩展模板添加触发器声明 - 结果相同。
编辑器用橙色曲线提醒我“意外的属性扩展”,如果我忽略它并尝试运行我的管道,我会收到错误“/azure-pipelines.yml (Line: 4, Col: 1): Unexpected value 'stages '"
我究竟做错了什么?我检查了 Azure Pipelines YAML 架构,找不到任何迹象表明我不应该做我所做的事情。
我调查的参考点是这个页面:https ://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops#extend-from-a-template
我可以通过编写这样的阶段声明之一来重用我的模板:
- stage: Test
jobs:
- job: TestOnWindows
steps:
- template: resource-template.yml
- script: echo Testing on Windows!
- job: TestOnLinux
steps:
- script: echo Testing on Linux!
- deployment: DeployToTest
environment: 'Test'
但是模板的“包含”不会触发环境的批准/检查条件
谢谢 :-)
/杰斯珀
解决方案
看起来没有办法通过从其他 yaml 扩展来覆盖阶段。也许考虑不同的方法..使用舞台模板?