根据TFVC中特定文件夹的更改触发VSTS构建

时间:2016-06-22 19:02:59

标签: azure-devops azure-pipelines tfvc

在Team Services中,我正在尝试为一个包含不同产品的子文件夹的Team Project设置多个构建定义(遵循single Team Project方法)。我遇到的问题是CI构建似乎是从TFVC repo的任何更改中触发而不考虑CI触发器过滤器。

回购看起来像:

MyProject
  Product1
  Product2
  Product3

我有3个单独的构建定义,每个定义包含一个子文件夹的映射(例如$ / MyProject / Product1)和一个带有“include”过滤器的CI触发器,用于同一个文件夹。

当我在$ / MyProject / Product1中检查对文件的更改时,VSTS启动三个新构建,每个构建来自三个定义。每个构建声明与相同变更集的关联。

我期待一个基于构建定义的构建,其中包含“$ / MyProject / Product1”的包含过滤器。

我尝试了其他一些事情:

  1. 禁用“批量更改” - 仍会导致每个版本的构建 定义,但在构建中没有引用变更集 Product2和Product3的过滤器。
  2. 为父文件夹和同级文件夹添加排除过滤器 - 没有看到任何内容 改变行为
  3. docs读取:

      

    TFVC包含

         

    选择要包含和排除的版本控制路径。在   大多数情况下,您应该确保这些过滤器是一致的   使用“存储库”选项卡上的TFVC映射。

    我是否误解了过滤器的预期行为或这是一个错误?还有其他人经历过吗?任何解决方法的想法?

    注意:我确实看过this answer,但我不清楚它是否涵盖了多重构建定义的皱纹。如果您使用一个定义来构建多个分支并映射了一个共同的父分支,则过滤器可能无法发挥作用。

2 个答案:

答案 0 :(得分:2)

此问题现已修复。请再试一次。有关详细信息,请参阅此链接:CI Builds may not trigger as expected

  

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

     

修复程序部署于2016年6月27日21:26 UTC完成,我们有   确认我们无法再重现该问题。我们理解这一点   客户依赖VS Team Services作为关键服务并道歉   对于此事件造成的任何影响。

     

此致,Arvin

答案 1 :(得分:1)

我相信我发现了这个错误!看起来构建的构建定义触发器不遵循映射,但它们过去曾经使用过。我使用了历史记录并在我的2个构建定义中做了一个diff,而json为一个(旧的构建定义)在branchFilters中的映射集中为触发器定义了完整的分支路径,但是新的分支定义只有branchFilters中的存储库路径,即使存储库映射指向分支。

旧的正确的构建定义:

"triggers": [
{
      "branchFilters": [
        "+$/WF.Workflow/Main/!v09"

新的构建定义(错误并为存储库中的每个签入运行)

"triggers": [
        {
      "branchFilters": [
        "+$/WF.Workflow"

这个新的应该指向“+ $ / WF.Workflow / Main /!v08”

我在Eddie使用此信息创建的Connect问题中添加了评论。我希望它有所帮助。

作为临时解决方法,我尝试使用Gated CheckIn,它似乎现在可以使用。它为登记过程增加了一些统治,但这是我现在所能做的。我希望很快得到解决。