如何排除对管道 yaml 文件的更改以触发构建 i azure devops?

sir*_*adk 4 git yaml azure-devops azure-pipelines

使用 Azure DevOps 和管道 yaml 文件。在 develop 分支上有一个触发器。但是,当我保存对 yaml 文件的更改时,它会触发一个新的构建。

发生这种情况的原因是对 yaml 文件的更改是触发器捕获的新提交。

所以我的问题是,如何从触发新构建中排除对 yaml 文件的更改?

Krz*_*tof 23

随着此处宣布的更改支持路径过滤器中的通配符, 我们现在可以使用通配符:

在管道 YAML 文件中为 CI 或 PR 触发器指定包含和排除分支时,可以使用通配符。但是,在指定路径过滤器时不能使用它们。例如,您不能包含与 src/app/**/myapp* 匹配的所有路径。一些客户指出这给我们带来了不便。此次更新填补了这一空白。现在,您可以在指定路径过滤器时使用通配符(**、* 或 ?)。

所以你现在可以:

# specific path build
trigger:
  branches:
    include:
    - master
    - releases/*
  paths:
    include:
    - '*'
    exclude:
    - '**/*.yml'
    - '**/*.yaml'
Run Code Online (Sandbox Code Playgroud)

  • 公平警告:“**”路径字符串有错误,并且仅匹配嵌套目录。例如,排除`**/*.md`将排除嵌套目录中的`.md`文件(例如`web/README.md`,但**不**匹配根目录中的`.md`文件(例如`自述文件.md`) (6认同)

ric*_*sch 5

您可以指定要包含或排除的文件路径。请注意,分支/标签和文件路径之间的通配符语法是不同的。

# specific path build
trigger:
  branches:
    include:
    - master
    - releases/*
  paths:
    include:
    - docs/*
    exclude:
    - docs/README.md
Run Code Online (Sandbox Code Playgroud)

来源:构建 Azure Repos Git 或 TFS Git 存储库 - CI 触发器 - 路径

2021 年 4 月编辑:

路径过滤器不支持通配符。

现在取自同一来源:

您可以指定要包含或排除的文件路径。

# specific path build
trigger:
  branches:
    include:
    - master
    - releases/*
  paths:
    include:
    - docs/*
    exclude:
    - docs/README.md
Run Code Online (Sandbox Code Playgroud)

当您指定路径时,您必须明确指定要触发的分支。您不能仅使用路径过滤器触发管道;您还必须有一个分支过滤器,并且与路径过滤器匹配的更改文件必须来自与分支过滤器匹配的分支。

提示:

  • 路径过滤器不支持通配符。
  • 路径总是相对于存储库的根指定。
  • 如果不设置路径过滤器,则默认情况下会隐式包含 repo 的根文件夹。
  • 如果排除路径,则不能同时包含它,除非您将其限定为更深的文件夹。例如,如果您排除 /tools,那么您可以包括 /tools/trigger-runs-on-these
  • 路径过滤器的顺序无关紧要。
  • Git 中的路径区分大小写。请务必使用与真实文件夹相同的大小写。
  • 您不能在路径中使用变量,因为变量是在运行时(触发器触发后)计算的。

  • 自 2021 年 9 月 8 日起支持路径筛选器的通配符。请参阅发行说明:https://learn.microsoft.com/en-us/azure/devops/release-notes/2021/sprint-192-update#support-for -路径过滤器中的通配符 (7认同)
  • 触发器路径不支持通配符——仅支持完整文件名或目录名。我尝试在 Angular 构建中使用 *.json 作为触发器,但它被忽略了。 (2认同)