如何排除对管道 yaml 文件的更改以触发构建 i azure devops?
Posted
技术标签:
【中文标题】如何排除对管道 yaml 文件的更改以触发构建 i azure devops?【英文标题】:How can I exclude changes to the pipeline yaml file to trigger a build i azure devops? 【发布时间】:2020-09-22 03:06:35 【问题描述】:使用 Azure devops 和 piplines yaml 文件。开发分支上有一个触发器。但是,当我将更改保存到 yaml 文件时,它会触发新的构建。
发生这种情况是因为对 yaml 文件的更改是由触发器捕获的新提交。
所以我的问题是,如何排除对 yaml 文件的更改以触发新构建?
【问题讨论】:
【参考方案1】:随着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'
【讨论】:
谢谢,我是专门找 YAML 文件的。【参考方案2】:您可以指定要包含或排除的文件路径。请注意,分支/标签和文件路径之间的通配符语法是不同的。
# 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 中的路径区分大小写。请务必使用与实际文件夹相同的大小写。 您不能在路径中使用变量,因为变量是在运行时评估的(在触发器触发之后)。
【讨论】:
触发器路径不支持通配符——只支持完整的文件名或目录名。我尝试在 Angular 构建中使用 *.json 作为触发器,但它被忽略了。 如果您还使用trigger: none
(仅当您希望基于 ADO 中的 PR 策略检查运行管道时使用),此功能是否有效。
@greg - 对于拉取请求,您需要转到分支策略并在那里设置路径过滤器。在此处查看更多信息 - docs.microsoft.com/en-us/azure/devops/repos/git/…以上是关于如何排除对管道 yaml 文件的更改以触发构建 i azure devops?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 yaml 中处理 Azure DevOps 管道中的错误?