【问题标题】:TeamCity - Listen to changes in specific directory on multiple branchesTeamCity - 监听多个分支上特定目录的变化
【发布时间】:2018-05-15 21:31:24
【问题描述】:

我已将 vcs 触发器配置为仅监视特定目录,例如“+:SomeDirectory/**”,当我的 VCS 根目录配置了 1 个分支时,它工作正常。最近我做了一个更改并配置了 VCS root 来监听多个分支。

我有基于主开发分支的功能分支,我只想在特定目录已更改时触发构建。不幸的是,使用这种配置,teamcity 会为每个全新的功能分支触发额外的构建(它假定它是新分支,因此目录中有更改)。所以我有 2 个构建:如果此目录中有任何更改,如果分支是新的,则构建。

是否可以根据我的主要开发分支仅在“someDirectory”中发生更改时触发功能分支上的构建?

【问题讨论】:

  • 是的,这是可能的。在您配置目录过滤器的同一窗口的底部,您还应该看到一个用于指定“分支过滤器”的选项
  • 我在 vcs root 中配置了分支规范,它只构建了所需的分支。我需要在分支过滤器中配置什么以及为什么?
  • 试试下面的内部属性teamcity.vcsTrigger.runBuildOnSameRevisionInEveryBranch=false(见comment)。

标签: teamcity


【解决方案1】:

是的,您可以通过在触发器配置页面添加 VCS 触发器来实现此目的,您可以在其中指定“分支过滤器”等。在这里您还可以创建VCS Trigger Rules,您可以在其中指定哪个“VCS root”将触发构建,针对哪些目录。

请注意VCS Checkout Rules 可能会影响 VCS 触发规则中使用的路径!

例如考虑将两个 VCS Roots 附加到构建配置,并带有检出规则:

master-vcs-root  +:. => master
feature-vcs-root +:. => feature

所以 master-vcs-root 签出到 [agentpath]/master,而 feature-vcs-root 签出到 [agentpath]/feature。

如果我们只希望根据在 feature-vcs-root 上的特定目录中所做的更改触发触发器,则触发器规则应该考虑到 checkout 目录:

+:root=feature-vcs-root:feature/someDirectory/*

而不是

+:root=feature-vcs-root:someDirectory/*

这是在 TeamCity Professional 2017.2.2(内部版本 50909)上工作的。

【讨论】:

    猜你喜欢
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多