与 Perforce Helix Swarm 的集成
Perforce Helix Swarm 是 Helix Core 的代码审查工具。 当开发人员将文件置于架上并请求审查时,TeamCity可以为此次改动进行构建,并将结果以 Swarm tests 的形式发布,同时也将其发布在Helix Swarm审查的评论区域。
TeamCity 和 Helix Swarm 之间的集成基于 提交状态发布器 构建功能。 出版者利用 Swarm tests 解决两项任务:
跟踪 Helix Swarm 审核何时被创建或编辑,并在此发生时向 TeamCity 发送启动新构建的请求;
将 TeamCity 构建的 post 状态反馈到 Helix Swarm 的审查中。
根据您的 Helix Swarm 设置是否已有测试在用户创建或编辑审查时启动 TeamCity 构建,您可以选择以下两个选项之一:
允许 TeamCity 创建新的 Swarm 测试。 当您没有现有的 Helix Swarm 工作流和测试时,请使用此方法。 仅当您将管理员用户凭证传递给 Commit Status Publisher 时,此选项才可用。 如果您打算选择此选项,那么请直接跳至 设置 Commit 状态发布器 部分,因为您在 Swarm 端无需任何额外设置。
强制 TeamCity 查找并利用现有的工作流和测试。 这种方法不需要管理员用户凭证,因为 TeamCity 不会创建任何 Swarm 实体。 然而,您将需要在 Swarm 端手动设置这些实体。
本节中描述的步骤在 Helix Swarm 用户界面中执行,仅在 TeamCity 使用非管理员用户的凭证发布新的 Swarm 评论时需要。
Helix Swarm Tests 可以在创建或编辑评审时向 TeamCity REST API 端点发送请求。

单击 测试 ,位于侧边导航窗格中。
单击 添加测试定义 按钮。
在新的浏览器标签页中,转到 TeamCity UI 并导航到 管理 | <Your_Build_Configuration>。
从 TeamCity 复制 构建配置 ID 值。
返回至 Swarm 测试设置,并将复制的值粘贴为测试名称。
note
请注意,Helix Swarm 对测试名称的字符数量限制为 32 个。 如果您的构建配置 ID 超过了这个限制,那么请在 TeamCity 构建配置设置中进行更改。
在 URL 字段中输入以下值:
<TeamCity_server_URL>/app/perforce/runBuildForShelve
这个值是一个 TeamCity REST API 端点,Helix Swarm 将使用它来与您的构建配置进行通信。
在 正文 字段中输入以下字符串:
buildTypeId=<X>&vcsRootId=<Y>&shelvedChangelist={change}&swarmUpdateUrl={update}
X
— 与测试名称的值相同。 从 TeamCity 的 构建配置 ID 中复制。Y
— 在 TeamCity 中,转到 管理 | <Your_Build_Configuration> | 版本控制设置 | <Your_VCS_Root> 并复制 VCS 根 ID 值。{change}
— 这是 更改编号。{update}
— 这是 update callback URL。
这个字符串允许 Helix Swarm 测试定位到特定的 TeamCity 配置,并为其安排新的构建。 例如:
buildTypeId=P4-Remote_MyBuildConfig&vcsRootId=MainP4Root&shelvedChangelist={change}&swarmUpdateUrl={update}
要授权 Swarm 对 TeamCity 的请求,请单击 添加页眉 并指定以下值:
标题 — "Authorization"
价值 — "Bearer ABC",其中 ABC 是 TeamCity 用户访问令牌。
将 超时 设置为 10 秒。
单击 保存 以保存您的新测试。
Helix Swarm Workflows在用户创建或编辑 Swarm 评论时运行测试。

单击 工作流 ,位于侧边导航窗格中。
创建一个新工作流或编辑 全局工作流。
在工作流设置中,单击 添加测试 并选择您在上一步中创建的测试。
选择 更新时 触发器类型。
tip
要收到事件通知,请确保 配置 Swarm 触发器。
将 块 值保留为 "Nothing"。
单击 保存 以退出工作流设置。
Helix Swarm Project 是一组在特定代码库上共同工作的 Helix Core Server 用户。
单击 项目 ,位于侧边导航窗格中。
创建一个新的项目,或编辑一个已存在的项目。
将 工作流 值设置为您在上一步中创建的工作流。 如果您的测试用于全局工作流中,请选择“无工作流”选项。
在 TeamCity UI 中,导航到 管理 | <Your_Build_Configuration>。
切换到 构建功能 选项卡。
单击 添加构建功能 并选择 提交状态发布器。
选择 Perforce Helix Swarm 作为发布者。
请输入您的 Helix Swarm 实例的 URL。
输入用户名和 ticket。 您指定的用户必须具有向 Helix Swarm 评审发布评论的权限。 另外,请确保用户的票证不会过期,以防止 Commit Status Publisher 无法访问您的 Swarm 实例。
如果您没有任何现有的工作流和测试来触发新的 TeamCity 构建,并且您希望 TeamCity 在需要时自动创建它们,请选中 创建 Swarm 测试 选项。 此设置要求您在第6步中传递管理员用户名和票据。
如果您已经有一个 Commit Status Publisher 可以使用的工作流(或者您选择创建一个以避免将管理员凭证传递给构建功能),请将此复选框留空。
Commit Status Publisher 可以通过在评审的 消息 选项卡下发布构建结果(成功/失败)并更新 测试 部分,通知 Swarm 用户当前的 TeamCity 构建状态。
使用 代码审查注释 复选框指定 Commit Status Publisher 是否应将这些评论发布到相应的 Swarm 评审选项卡。
单击 测试连接 以验证 Commit Status Publisher 是否可以访问您的 Swarm 实例。 如果您收到 "Provided credentials lack admin permissions" 错误,请确保您未尝试为非管理员用户凭据启用 创建 Swarm 测试 选项。
单击 保存 以将构建功能添加到您的配置中。
在您设置了 Commit Status Publisher 之后,修改并搁置任何 depot 文件。 在 Helix Swarm 中打开此搁置更改并单击 请求审查。 这将触发一个 Helix Swarm 测试,该测试将向 TeamCity 发送一个请求以启动新的构建。 如果您的集成使用手动配置的工作流和测试,评审会显示 测试 部分,指示当前的测试/构建状态。

TeamCity 试图找到一个与在 Helix Swarm 中请求审查的人具有相同用户名的用户,并为此用户启动一个新的个人构建。 您可以单击构建的 Swarm 审查 部分中的链接以打开搁置更改和相关的 Swarm 评审。

您还可以从构建的 更改 选项卡查看相关更改:

当 TeamCity 构建完成时,Commit Status Publisher 可以在 Helix Swarm 评审的 消息 部分下以新评论的形式宣布结果。

您可以在 Commit Status Publisher 的设置对话框中取消选中 创建 Swarm 测试 选项以禁用这些评论。 在这种情况下,构建功能将仅更新 Swarm 评审的 测试 部分。