【发布时间】:2020-09-22 03:06:35
【问题描述】:
使用 Azure devops 和 piplines yaml 文件。开发分支上有一个触发器。但是,当我将更改保存到 yaml 文件时,它会触发新的构建。
发生这种情况是因为对 yaml 文件的更改是由触发器捕获的新提交。
所以我的问题是,如何排除对 yaml 文件的更改以触发新构建?
【问题讨论】:
标签: git azure-devops yaml azure-pipelines
使用 Azure devops 和 piplines yaml 文件。开发分支上有一个触发器。但是,当我将更改保存到 yaml 文件时,它会触发新的构建。
发生这种情况是因为对 yaml 文件的更改是由触发器捕获的新提交。
所以我的问题是,如何排除对 yaml 文件的更改以触发新构建?
【问题讨论】:
标签: git azure-devops yaml azure-pipelines
随着Support for wild cards in path filters 此处宣布的更改,我们现在可以使用通配符:
在管道 YAML 文件中为 CI 或 PR 触发器指定包含和排除分支时,可以使用通配符。但是,在指定路径过滤器时不能使用它们。例如,您不能包含与 src/app//myapp* 匹配的所有路径。一些客户已指出这是不便之处。本次更新填补了这一空白。现在,您可以在指定路径过滤器时使用通配符(、* 或 ?)。
所以你现在可以:
# specific path build
trigger:
branches:
include:
- master
- releases/*
paths:
include:
- '*'
exclude:
- '**/*.yml'
- '**/*.yaml'
【讨论】:
您可以指定要包含或排除的文件路径。请注意,分支/标签和文件路径之间的通配符语法是不同的。
# specific path build
trigger:
branches:
include:
- master
- releases/*
paths:
include:
- docs/*
exclude:
- docs/README.md
来源:Build Azure Repos Git or TFS Git repositories - CI triggers - Paths
2021 年 4 月编辑:
路径过滤器不支持通配符。
现在取自同一来源:
您可以指定要包含或排除的文件路径。
# specific path build trigger: branches: include: - master - releases/* paths: include: - docs exclude: - docs/README.md当您指定路径时,您必须明确指定要触发的分支。您不能仅使用路径过滤器触发管道;您还必须有一个分支过滤器,并且匹配路径过滤器的更改文件必须来自与分支过滤器匹配的分支。
提示:
- 路径过滤器不支持通配符。
- 始终指定相对于存储库根目录的路径。
- 如果您不设置路径过滤器,则默认情况下会隐式包含 repo 的根文件夹。
- 如果排除路径,则不能同时包含它,除非将其限定为更深的文件夹。例如,如果您排除 /tools,那么您可以包含 /tools/trigger-runs-on-these
- 路径过滤器的顺序无关紧要。
- Git 中的路径区分大小写。请务必使用与实际文件夹相同的大小写。
- 您不能在路径中使用变量,因为变量是在运行时评估的(在触发器触发之后)。
【讨论】:
trigger: none(仅当您希望基于 ADO 中的 PR 策略检查运行管道时使用),此功能是否有效。