【问题标题】:Trigger CI Build only on changes to subfolder in VSTS (was TFS Online), using Git仅在更改 VSTS 中的子文件夹时触发 CI 构建(TFS Online),使用 Git
【发布时间】:2016-11-20 11:16:03
【问题描述】:

我有一个 Git 存储库,在 Visual Studio Team Services 中有两个子文件夹。一个是HelloWorld,另一个是ST。路径在我的本地文件夹中显示如下。

根 /你好世界 /你好世界 /ST

HelloWorld 下是一个 C# 应用程序。 ST 下是一组基本的 DB 脚本。

我想分别用 CI 构建这些。我有一个用于 HelloWorld 的构建和一个用于 ST 的构建,每个都独立工作。如果我使用 git 提交更改并推送,则构建会成功运行。意思是,如果我从 VS 提交 C# 更改,ST 数据库构建将运行,然后 c#、VS 解决方案构建运行。 如果我提交并推送数据库更改,同样的事情。两个构建都运行。

但是,如果我在 VSTS 中使用新的路径过滤器,并使用以下任一方法为 ST 构建添加过滤器:

  • 包括“ST”
  • 排除“HelloWorld”

并在任一文件夹中提交更改,ST 构建将不会运行。

同样,如果我向 HelloWorld 构建添加过滤器,包括或排除,该构建将不会运行。

我试过这样的路径:

  • /HelloWorld
  • HelloWorld/*
  • HelloWorld/HelloWorld
  • HelloWorld/HelloWorld/*
  • H*
  • /H*

更多组合,可以构建。如果我使用任何路径过滤器,则不会触发构建。无论过滤器如何,手动构建都可以正常工作。

是我遗漏了什么还是路径过滤器损坏了?

【问题讨论】:

    标签: git tfs continuous-integration azure-devops azure-pipelines


    【解决方案1】:

    我不确定您的项目在 TFS/VSTS 中的文件夹结构,所以我创建了一个示例项目供您参考,以下是文件夹结构:

    当有更改推送到第一个“HelloWorld”文件夹时将触发构建,并且推送到“ST”文件夹的更改不会触发构建,具有以下设置:

    只有在将更改推送到“ST”文件夹时才会触发构建:

    请先从“代码”选项卡检查您的文件夹结构,然后更新您的构建定义的设置。

    【讨论】:

    • “包括:/HelloWorld”是否也捕获对子文件夹的更改,如果没有,正确的语法是什么?
    • @aloneguid 是的,它捕获对子文件夹的更改。
    • 谢谢。是否可以从触发构建中排除“合并提交”?合并提交通常在子文件夹更改之外。
    • 仍然不起作用,更改不会触发构建
    【解决方案2】:

    这是一个问题,请参阅此链接了解详细信息:CI Builds may not trigger as expected. 尝试检查您的构建定义是否受到影响,通过历史记录选项卡验证定义。

    此外,此问题已在 6 月 27 日修复。

    最终更新:2016 年 6 月 27 日星期一 22:53 UTC

    修补程序部署于 2016 年 6 月 27 日 21:26 UTC 完成,我们有 验证我们无法再重现该问题。我们明白 客户将 VS Team Services 视为一项关键服务并道歉 对于此事件造成的任何影响。

    此致,阿文

    【讨论】:

    • “通过历史标签验证定义”是什么意思?如果我手动将它们排队,或者我删除路径过滤器,我就有可以工作的构建。一旦我添加了路径过滤器,构建就不起作用。您提到的链接略有不同。我没有整个回购的构建。我有两个子文件夹,每个子文件夹都有一个差异项目。我希望任何一个项目的构建都能独立工作。就您的更新而言,我不确定这是从哪里来的,但截至 7 月 18 日,情况仍然很糟糕。我在 7 月 16 日设置了新版本,其中包含一个新项目(因此是 HelloWorld)并且路径过滤器不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2016-04-27
    • 1970-01-01
    • 2017-12-18
    • 2018-10-18
    • 1970-01-01
    相关资源
    最近更新 更多