【问题标题】:YAML complaining about "unexpected property extends"YAML 抱怨“意外的属性扩展”
【发布时间】:2020-09-11 16:29:34
【问题描述】:

我正在对我们如何确保我们的 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价值‘阶段’”

我做错了什么?我检查了 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'

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

谢谢你:-)

/杰斯珀

【问题讨论】:

  • 除了在使用extend 时不能使用stage 之外,您的解决方案很优雅。我找不到类似的解决方案来解决这个问题。不知道在任务中写一个脚本来检查是否包含特定的任务会满足你的要求吗?

标签: azure-pipelines azure-pipelines-yaml


【解决方案1】:

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

【讨论】:

  • 我刚才试过了 - 也失败了。编辑器已经停止抱怨,但现在运行会抛出错误 "/azure-pipelines.yml (Line: 4, Col: 3): Unexpected value 'stages'" 。我将使用 template-resource.yml.file 上的更多数据更新我的原始帖子
  • @JesperLundStocholm 从文档来看,extends 下似乎只有parameter。您可能需要为此考虑不同的方法。怎么样,舞台模板?
  • 我会调查这个 :-)
猜你喜欢
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 2013-08-14
  • 2010-12-25
  • 2020-05-02
  • 1970-01-01
相关资源
最近更新 更多