YAML抱怨“意外的财产延伸”

时间:2020-09-11 16:29:34

标签: azure-pipelines 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(行:4,列:1):意外”值“阶段””

我在做什么错?我已经检查过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'

但是模板的“包含”不会触发环境的批准/检查条件

谢谢:-)

/ Jesper

1 个答案:

答案 0 :(得分:1)

看起来没有办法通过从其他Yaml扩展来覆盖阶段。也许正在考虑不同的方法。使用舞台模板吗?