【发布时间】:2022-01-17 18:08:25
【问题描述】:
我想使用 yaml 模板设置 Azure 管道。我挣扎的是路径触发定义。我希望启动各个管道,前提是它们实际上与早期版本不同。
core.yaml 是一个通用模板,用于不同的项目。
parameters:
- name: projectPath
type: string
trigger:
branches:
include:
- master
- feature/*
paths:
include:
- ${{ parameters.projectPath }} # this is the problematic part
steps:
... # restore, build, test, etc tasks are defined here
build.yaml 文件是为每个项目定义的。它们仅在 core.yaml 上扩展并提供
所需参数:
extends:
template: core.yaml
parameters:
projectPath: src/project1
使用值${{ parameters.projectPath }} 失败,因为“给定上下文中不允许模板表达式”。如果我用引号括起来也会发生同样的情况。
使用值$(parameters.projectPath) 有效,但即使我更改定义路径之外的文件也会触发。
我也尝试使用实际值而不是参数(例如“src/project1”),但它也会触发每次更改,即使我只触摸文件“src/project2/foo.md”。
我看到的示例没有在模板中使用触发器。但通常情况下,当我放错节点时触发管道(例如意外值)时会出现语法错误。所以这只是我的期望,它应该可以工作。
有什么建议吗?
【问题讨论】:
-
老实说,听起来你很清楚——你不能在那种情况下使用模板表达式。我想您需要将触发器放在每个单独的管道中,而不是放在模板中。
-
@VinceBowdren 正确,这也是我的结论,但我希望我只是忽略了一些东西。因为这样我需要将“触发器”块复制并粘贴到一堆 yaml 文件中,而不仅仅是将其添加到模板中。
标签: azure-devops parameters yaml azure-pipelines