TeamCity On-Premises 2024.03 Help

VCS 检出规则

VCS 签出规则允许您签出配置的 VCS 根的一部分,并将版本控制中的目录映射到构建代理上的 构建签出目录 的子目录中。 因此,您可以为整个仓库定义一个 VCS 根,并指导每个构建配置只检出它的相关部分。

检出规则影响在用户界面中显示的构建更改以及代理进行构建时检出的文件。 如果提交的内容与构建的 VCS 根目录的任何检出规则模式都不匹配,TeamCity 将完全忽略它。 此类更改将不会显示为待处理,而且无法在当前配置中触发任何构建。
要显示更改但不触发提交的构建,请使用 VCS 触发规则

一般建议尽可能减少指向存储库根的 VCS 根的数量,并通过签出规则定义特定构建配置检出的内容。

添加签出规则

  1. 前往 Administration 并点击您想要配置的项目。

  2. 从项目的 常规设置页面,点击相关的构建,位于 构建配置 下面

  3. 从侧边栏中选择 Version Control Settings

  4. 在列表中找到 VCS 根,然后点击 编辑检出规则 来打开一个用于输入规则的表单。

  5. 使用 VCS 存储库浏览器 VCS 浏览器图标 选择要签出的目录。

请注意,TeamCity 中的 Perforce 支持将检出规则视为区分大小写。 对基于 Perforce 的构建配置启用不区分大小写,可以在 版本控制设置 页面中通过在 编辑检出规则 表格中添加以下注释来实现: ##teamcity 忽略大小写

语法

在下面的示例中,仓库中的路径( VCSPath )是相对于配置的 VCS 根目录的,代理上的路径( AgentPath )是相对于构建检出目录的。

单个检出规则的一般语法如下:

+|-: VCSPath [=> AgentPath]

如果未指定规则,将包含所有文件。
当您开始输入规则时,请注意,只要您输入任何 +: 规则,TeamCity 就会删除默认的 "包含全部" 设置。
要显式包含所有文件,请使用 +:. 规则。

请注意,排除 checkout 规则(以 -: 的形式)通常只能加快服务器端的 checkout 速度,除非您使用 PerforceTFS 代理端的 checkout,这里的排除规则能够得到有效的处理。
对于其他版本控制系统,代理自身的 checkout 可能会通过检出所有被提及为包括规则的根目录并删除被排除的目录,以模拟排除 checkout 规则。 对于这样的系统,通常应避免对代理端签出规则使用排除规则。 请参考 VCS 检出模式页面获得更多信息。
当使用 Git 代理端检出时,TeamCity 将某些检出规则转换为稀疏检出模式,这限制了受支持的 VCS 检出规则集

如果有多个具有交叉检出规则(例如,两个 VCS 根具有检出规则 +: foo => bar )的 VCS 根附加到构建配置上,并且文件在 代理 上被检出,可能在检出过程中跳过一些文件。 以下警告将在用户界面中显示:

一个版本控制系统(VCS)根目录中的检出规则中指定的路径与另一个 VCS 根目录的检出规则冲突(交叉)。 这可能会在 "代理检出" 模式下造成问题。

为了解决这个问题,解决签出规则之间的冲突或者将签出模式更改为 “server-side"。

输入规则时,请注意以下几点:

  • 要输入多条规则,每条规则应该分别输入在单独的一行。

  • 对于每个文件,如果文件被包含在内,最特定的规则将会应用,无论规则的列出顺序如何。

  • 如果您不输入运算符,它将默认为 +:

规则可用于执行以下操作:

语法

说明

+:.=>AgentPath

在构建代理上将根检出到 路径 目录。

-:VCSPath

排除 VCSPath (路径必须是一个目录,而不是文件名)。

+:VCSPath=>.

VCSPath 从 VCS 映射到 构建代理的默认工作目录

VCSPath=>NewAgentPath

将 VCS 中的 VCSPath 映射到构建代理上的 NewAgentPath 目录。

+":VCSPath

将 VCS 中的 VCSPath 映射到构建代理上的同名目录( VCSPath)。

具有三个 VCS 检出规则的示例:

-:src/help +:src=>production/sources +:src/samples=>./samples

在上述示例中,第一条规则将 src / help 目录及其内容排除在检出之外。 第三条规则比第二条规则更为具体,将 src/samples 路径映射到构建代理的默认工作目录中的 示例 路径。 第二条规则将 src 路径的内容映射到构建代理上的 生产/源代码 ,除了第一条规则排除的 src / help 和第三条规则将其映射到另一位置的 src/samples

Git 根目录的检出规则限制

Git 插件使用 git sparse-checkout 在代理上检出 Git 文件。 该插件只能执行简单的文件映射操作,这限制了对 Git 支持的 VCS 检出规则 的集合。

支持以下规则:

+:dirA/dirA1 -:dirA/dirA1/dirA2 +:. => dirA/dirA1/dirA2 +:dirA => dirA +:dirA/dirA1 => dirA/dirA1 +:dirA/dirB/dirC => dirD/dirE/dirA/dirB/dirC

请注意,规则不能重新映射文件。 也就是说,以下规则 不受支持+":dirA/dirA1 => dirA/dirA2

如果您为一个根目录指定了多个检出规则,请确保它们的检出目录(规则的右侧部分)有一个共同的父目录( [前缀/])。 仅支持代理端签出的规则 +:dirA => [prefix/]dirA ,而且所有规则的 [前缀/] 必须相同。

例如:

+:dirA/dirB/dirC => [prefix/]dirA/dirB/dirC +:dirD/dirE/dirF => [prefix/]dirD/dirE/dirF

请注意,以下规则 不受支持+:dirA=>[prefix/]dirA/postfix。 如果您在检出目录路径后添加 [/后缀] ,并且配置的 VCS 检出模式 设为 "始终在代理上检出文件",则新的构建将无法启动。

签出目录路径错误
最后修改日期: 16日 7月 2024年