【发布时间】: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