仅当 Azure Pipelines 中的指定文件夹没有更改时才触发构建

vic*_*cch 7 azure-devops azure-pipelines azure-pipelines-release-pipeline

我在 Visual Studio Team Services 中有一个包含两个子文件夹的存储库:Code 和 Scripts。我现在使用触发器选项卡上的路径过滤器在 Scripts 文件夹中发生更改时触发一个构建 (BuildScripts),而在 Code 文件夹中发生更改时触发另一个构建 (BuildCode)。如果在推送或完成拉取请求后两个文件夹都已更改,则将触发两个构建。

如果仅在 Code 文件夹中有更改,我想要做的是触发 BuildCode 构建。有没有办法做到这一点?

Dan*_*cht 22

Azure Devops 确实支持这种情况。如果您使用以下文件夹结构

 rootfolder
|- scripts
|- code
Run Code Online (Sandbox Code Playgroud)

只需azure-pipelines.yml为要构建的每个路径创建一个并在顶部添加以下行:

trigger:
  paths:
    include:
    - path/to/include/*

# for exampple: 
#   - scripts/*

# You can also exlude specific files
    exclude:
    - docs/README.md
Run Code Online (Sandbox Code Playgroud)

Microsoft 文档中阅读更多内容。一个例子可以在这里找到。

  • 这不是OP想要的。 (2认同)

Leo*_*SFT 4

我想要做的是,如果仅在 Code 文件夹中发生更改,则触发 BuildCode 构建。有没有办法做到这一点?

恐怕没有这样的方法可以做到这一点。

据我了解,如果代码文件夹中BuildCode有更改,您希望触发构建。这意味着如果两个文件夹在推送或完成拉取请求后发生了更改,则不会触发构建。如果我理解正确的话,你不应该有任何办法这样做。BuildCode

当我们启用选项启用持续集成时,Azure Devops 将在我们提交分支/文件夹中的任何更改后触发构建,以确保我们的修改是正确的。这就是设计这个功能的初衷。

如果两个文件夹都改变了却只建了一个文件夹,不符合这个功能的初衷。我们可以绕过为文件夹启用持续集成的设置BuildCode

希望这可以帮助。