我正在对如何确保我们的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
答案 0 :(得分:1)
看起来没有办法通过从其他Yaml扩展来覆盖阶段。也许正在考虑不同的方法。使用舞台模板吗?