【问题标题】:Teamcity: how to checkout root directory, but watch changes only from subdirectoryTeamcity:如何签出根目录,但只能从子目录中查看更改
【发布时间】:2019-06-23 18:40:52
【问题描述】:

我们将 Teamcity 2018 与 TFS 结合使用。

我们有一个项目的结构如下

Root                <---- We want to checkout the whole Root-directory
     \ProjectA      <---- We want to show changes only from the sub-directory
     \ProjectB
     \ProjectB

我们希望观察 Root\ProjectA 目录中的更改,并仅显示在该目录下进行的更改。

但是,我们想检查整个 Root 目录并从那里运行我们的构建。

有什么办法吗?

【问题讨论】:

  • 这可能对您有所帮助:teamcity-support.jetbrains.com/hc/en-us/community/posts/… 如果您需要,我会在下班时尝试发布正确的答案。
  • ..但是检出规则也会影响哪些目录被检出给代理?我们仍然希望检查整个根目录及其包含的所有子目录。

标签: tfs continuous-integration teamcity


【解决方案1】:

触发规则可以帮助您完成此任务。在您的 VCS 触发器中,您可以指定一组规则来过滤或过滤各种条件,这些条件会导致您的构建配置触发。这些独立于您的 VCS 规则,这些规则将正常处理您选择 checkout 的内容。规则语法如下:

+|-[:[user=VCS_username;][root=VCS_root_id;][comment=VCS_comment_regexp]]:Ant_like_wildcard

在这种情况下,Ant_like_wildcard 是您特别感兴趣的元素,因为您可以(除其他外)使用它们来过滤特定目录。

这是 TeamCity 文档中的一个示例:

"-:lib/**" 防止通过更新构建源的“lib”目录来触发构建

使用您的示例,您的触发规则如下所示:

+:ProjectA/**

由于 TeamCity 处理这些类型的规则的方式,您可以使用单个包含而不是多个排除:

在指定规则时,请注意,只要您输入任何“+”规则,TeamCity 就会将隐式默认值从“包含所有”更改为“全部排除”。

您可以找到完整的 TeamCity VCS 触发器文档here

【讨论】:

  • 谢谢。这几乎是我一直在寻找的解决方案。有了这个,我可以正确触发作业。但是,更改日志 仍然显示所有项目的更改。如果我对 ProjectB 进行更改,它不会触发 ProjectA,但是一旦 ProjectA 最终触发或被手动触发,对 ProjectB 所做的更改仍然会显示在 ProjectA 的更改日志中。
  • @Mtq 啊,我知道您现在正在寻找什么附加层。从设计的角度来看,我明白为什么要包含这些更改。如果您将项目 B 中的代码作为构建的一部分使用,那么对该代码的更改应该与构建的整体产品相关,从而与您的更改日志相关。话虽如此,如果您想排除它们,更改日志视图有一个过滤组件和一个高级搜索选项。您应该能够指定 包含路径 字段以root\ProjectA 之类的东西可以直观地过滤更改日志结果。这有帮助吗?
猜你喜欢
  • 2013-01-08
  • 2015-03-09
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
相关资源
最近更新 更多