TeamCity On-Premises 2024.03 Help

Perforce

TeamCity 可以与 Perforce 集成,以构建存储在 Perforce Helix Core 中的源项目,并确保其持续集成和交付。 这里了解更多关于这个集成的信息 。

这篇文章描述了特定于 Perforce Helix Core VCS 根的设置。 常见的 VCS 根设置在 这里 描述。

P4 连接设置

设置

描述

端口

将 Perforce 服务器地址定义为 主机:端口

对于特定环境,可以在工作区选项 以下 中设置 P4Host 环境变量,适用于任何类型的检出。

Stream / 客户端 / 客户端映射

选择连接模式。 查看详细信息 如下

用户名

指定用户登录名。

密码或门票

可选,指定密码或票证。

如果您输入一个值,TeamCity 将会:

  • 将其设置为执行 Perforce 命令的 P4PASSWD 环境变量,或者

  • 如果 Perforce 服务器上禁用了基于密码的身份验证,则将其用作 p4 login 命令中的票据。

如果您将此字段留空,TeamCity 将依赖当前用户的现有 P4 票据(p4ticket.txt)。 如果该票证不在此文件中,但是Perforce的身份验证需要它,那么将会发生故障。
票证文件应该存在于TeamCity服务器机器以及所有运行TeamCity的构建代理上,这些构建代理为此VCS根构建Perforce。

基于票据的身份验证

选择此选项以启用基于票证的身份验证。 这个选项默认是启用的,并且不显示。

使用 Perforce Streams

选择 Stream 选项以使用现有的 Perforce stream。 TeamCity 将使用此流来准备基于流的工作区,并调整其客户端映射。

关于使用此模式的注意事项:

  • Stream 字段格式:

    • 支持深层结构规范,即像 //DEPOTNAME/1/2/n 这样的路径。

    • 支持 build parameters

  • 要使用 StreamAtChange 选项,您需要定义 Label / changelist to sync

  • 当使用 代理端签出(agent-side checkout) 模式 时,支持简单的 checkout rules,如 . => sub / directory。 排除检出规则、多重包含规则,或像 aaa=>bbb 这样的规则,只有在启用“创建非流工作区”选项时才支持(参见下面的 下方)。

  • 当任务流用于功能分支时,TeamCity可能会遗漏一些任务流中的更改,直到进行了修改提交,这意味着,直到对任务流进行了真正的提交,父流中的合并提交才会被检测到(请参见工单 TW-44765)。

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

在“启用功能分支支持"选项中,您可以指定要监视的分支流,以便查看是否发生了更改,这是在默认分支流的基础上添加的。 阅读更多 关于这个功能的信息。

使用 Perforce 客户端

Client 选项允许您直接指定客户端工作区的名称。 工作区必须已经由 Perforce 客户端应用程序(如 P4V 或 P4Win)创建。 仅使用配置的客户端工作区的映射规则。 客户端名称被忽略。

关于使用此模式的注意事项:

  • 当这个选项与 server-side checkout 一起使用时,服务器端的内部 TeamCity 源缓存将被禁用。 这可能会使 clean checkouts 的性能恶化。

  • 如果构建配置具有配置参数 teamcity.perforce.agent.reuse.client=true 并使用默认的签出规则,TeamCity 将不会在代理上创建另一个 Perforce 工作区,并会尝试重用现有的 Perforce 客户端,名称在 Perforce VCS 根中指定。

将 Perforce Depot 映射到客户端

Client mapping 选项允许指定仓库到客户端机器的映射。

关于使用此模式的注意事项:

  • 客户端映射 字段格式:

    • TeamCity 将根据运行构建的构建代理的 OS / 平台处理文件分隔符。 为了能在所有构建代理中使用特定的行分隔符,请选择 客户端 选项(在 Perforce 中指定 LineEnd)。 或者,您可以添加一个 代理要求,以便只在特定平台上运行构建。

    • 在映射中使用 team-city-agent 而不是客户名称。
      例如:

      //depot/MPS/... //team-city-agent/... //depot/MPS/lib/tools/... //team-city-agent/tools/...
  • 如果在两次构建之间更改了直接客户端映射,那么第二次构建 将会强制进行 清理检出,除非在服务器上设置了 teamcity.perforce.enable-no-clean-checkout 内部属性

  • 当以下情况发生时,更改客户端映射 不会强制 代理端签出进行清理:

    • Perforce 客户端名称已被使用:更改客户端的 Perforce 客户端映射不会导致进行干净的检出。

    • 使用了 Perforce 流:在保持相同的流根的同时更改流名称,不会导致干净的检出。

使用 ChangeView

要专注于特定的修订版本,请使用 ChangeView 规范:

//depot/... //team-city-agent/... ChangeView: //depot/dir1/…@90 //depot/dir2/…@automaticLabelWithRevision

其中 90 家dir1 的确切版本号,而 automaticLabelWithRevision 则是 dir2 的标记版本。 这些目录的所有其他修订版本将不会受到此 VCS 根的监控。

代理检出设置

当使用 代理端检出 时,TeamCity 会为每个 检出目录 / VCS 根目录 创建一个 Perforce 工作区。 这些工作区会在需要时自动创建,并在超时后自动删除。 查看更多关于 Perforce 工作区处理 的详细信息。

设置

描述

工作区选项

如有需要,可为 p4 客户端 命令设置以下选项: 选项提交选项LineEnd

对于特定环境,定义 P4Host (支持任何类型的结帐)。 查看有关工作空间参数的详细信息 下面

创建非流式工作空间

仅适用于 Streams

启用以便能够使用基于流规范的非流工作区检出源代码。 这允许使用 checkout rules,但会使在构建中提交到流成为不可能。

运行 'p4 clean' 进行清理

启用此选项可以在构建前清理工作区中的额外文件。 如果启用, p4 clean 命令将在 p4 sync 之前运行,除非使用 p4 sync -fp4 sync -p。 参见 命令参考

跳过已有列表的更新

启用此选项,以在同步时不在 Perforce 服务器上跟踪文件(始终将所有文件传输到代理, p4 sync -p)。 如果禁用,TeamCity 将使用 p4 have 来保持列表的更新。

额外同步选项

指定额外的 p4 sync 选项。

如果您需要指定应在 同步 命令后声明的选项列表,请省略此命令的名称。 例如:

  • 输入 --parallel=threads=5 来运行 p4 sync --parallel=threads=5 命令。

要指定应在 同步 命令之前和之后声明的选项,请在此额外选项列表中包含命令名称。 例如:

  • 输入 -r3 sync 来运行 p4 -r3 sync 命令。

  • 输入 -r4 sync --parallel=threads=5 来运行 p4 -r4 sync --parallel=threads=5 命令。

查看 命令参考 以获取更多信息。

Perforce 工作区参数

TeamCity 将每个 Perforce VCS 根的连接变量存储在以下参数中:

  • % \vcsRoot.extId.port %

  • % \vcsRoot.extId.user %

  • % \vcsRoot.extId.p4client %

在其中 extId 是 VCS 根的外部 ID,已在其设置中指定。

这样,您可以分别为每个根从脚本中访问它们。

在代理上进行检出时,TeamCity 提供了描述在检出过程中创建的 Perforce 工作区的环境变量
。如果用于检出的 Perforce VCS 根有多个,那么变量是为 第一个 VCS 根创建的。 变量是:

  • P4USER—— 和 vcsroot.<VCS_root_ID>.user 构建参数 相同。

  • P4PORT — 同 vcsroot.<VCS_root_ID>.port 一样。

  • P4CLIENT—— 同 vcsroot。<VCS root ID>。p4client ,这是在构建代理上生成的 P4 工作空间的名称。

这些变量可用于在签出后执行自定义的 p4 命令。

查看 更多详情

Perforce Proxy 设置

为了允许在 代理端检出 时使用 Perforce 代理,您需要在 构建代理 上指定 env.TEAMCITY_P4PORT 环境变量,代理将会把这个值当作 P4PORT 值。

其他设置

设置

描述

在构建代理上的 P4 路径

指定到 Perforce 命令行客户端( p4.exe )的路径。

这只适用于代理端检出。 在代理端,如果在 buildAgent.properties 中设置了这样的环境变量,或者来自 构建参数,那么此参数的值可以通过 TEAMCITY_P4_PATH 环境变量进行覆盖。

对于服务器,应在 TeamCity 服务器机器的 PATH 环境变量中存在 p4 二进制文件,或者可以通过 teamcity.perforce.customP4Path 内部属性 进行指定。

同步的标签/更改列表

如果您希望不使用最新的修订版,而是使用特定的 Perforce 标签(带有选择性更改)来检出源代码,请指定标签。 例如,这对生成里程碑/发布构建可能很有用。 如果此字段为空,将使用最新的更改列表进行同步。

字符集

请选择客户端机器上使用的字符集。

支持 UTF-16 编码

如果您的项目中以 utf16 Perforce file type 存储了 UTF-16 文件,请启用此选项。

如果您使用 服务器端检出 并在您的仓库中有 Perforce 文件类型 的文件,您可能希望启用此选项。 启用它以保持在已检出文件中的 UTF-16 编码。 否则,这些文件可能在签出时会被转换为 UTF-8

如果您将 UTF-16 文件存储为 二进制 Perforce 文件类型,它们将始终以“原样”检出,不会进行任何转换。

P4 信任

如果您的项目的 VCS 根通过 SSL 连接到 Perforce,TeamCity 将自动建立与其的可信连接。 每次测试 Perforce 连接,或者构建代理从 Perforce 检出源时,都会发送 p4 trust 命令。

如果 Perforce 服务器上的 SSL 证书得到更新,那么需要通过一个特殊参数来配置代理以信任这个新的证书。 出于安全原因,所有代理检出源代码后,需要删除此参数。 将 teamcity.internal.perforce.forceTrust=true 配置参数设置为相关的项目或构建配置。

最后修改日期: 16日 7月 2024年