TeamCity On-Premises 2024.03 Help

与 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 设置

本节中描述的步骤在 Helix Swarm 用户界面中执行,仅在 TeamCity 使用非管理员用户的凭证发布新的 Swarm 评论时需要。

创建测试

Helix Swarm Tests 可以在创建或编辑评审时向 TeamCity REST API 端点发送请求。

在 Helix Swarm 中进行测试
  1. 点击侧边导航窗格中的 Tests

  2. 点击 Add Test Definition 按钮。

  3. 在新的浏览器标签页中,访问 TeamCity UI,并导航至 管理 | <您的_构建_配置>

  4. 从 TeamCity 中复制 Build Configuration ID 值。

  5. 返回至 Swarm 测试设置,并将复制的值粘贴为测试名称。

  6. URL 字段中,输入以下值:

    <TeamCity_server_URL>/app/perforce/runBuildForShelve

    这个值是一个 TeamCity REST API 端点,Helix Swarm 将使用它来与您的构建配置进行通信。

  7. Body 字段中输入以下字符串:

    buildTypeId=<X>&vcsRootId=<Y>&shelvedChangelist={change}&swarmUpdateUrl={update}
    • X — 与测试名称的值相同。 从 TeamCity 中复制 Build Configuration 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}
  8. 为授权 Swarm 向 TeamCity 发送请求,请点击 添加头部 并指定以下值:

  9. Timeout 设置设为 10 秒。

  10. 点击 Save 来保存您的新测试。

设置工作流程

Helix Swarm Workflows在用户创建或编辑 Swarm 评论时运行测试。

Swarm 工作流设置
  1. 点击侧边导航面板中的 Workflows

  2. 创建一个新的工作流程或编辑 Global Workflow

  3. 在工作流程设置中,点击 Add Test 并选择您在上一步中创建的测试。

  4. 选择 On Update 触发器类型。

  5. Blocks 的值保留为 "Nothing"。

  6. 点击 Save 以退出工作流设置。

设立一个项目

Helix Swarm Project 是一组在特定代码库上共同工作的 Helix Core Server 用户。

  1. 点击侧边导航面板中的 Projects

  2. 创建一个新的项目,或编辑一个已存在的项目。

  3. Workflow 的值设置为您在上一步中创建的工作流程。 如果您的测试用于全局工作流中,请选择“无工作流”选项。

设置 Commit 状态发布器

  1. 在 TeamCity UI 中,导航至 管理 | <您的_构建_配置>

  2. 切换到 Build Features 标签页。

  3. 点击 Add build feature 并选择 提交状态发布器

  4. 选择 Perforce Helix Swarm 作为发布者。

  5. 请输入您的 Helix Swarm 实例的 URL。

  6. 输入用户名和 ticket。 您指定的用户必须具有向 Helix Swarm 评审发布评论的权限。 另外,请确保用户的票证不会过期,以防止 Commit Status Publisher 无法访问您的 Swarm 实例。

  7. 如果您没有任何现有的工作流程和测试可以触发新的 TeamCity 构建,而且您希望 TeamCity 在需要时能自动创建它们,请勾选 创建 Swarm 测试 选项。 此设置要求您在第6步中传递管理员用户名和票据。

    如果您已经有一个 Commit Status Publisher 可以使用的工作流(或者您选择创建一个以避免将管理员凭证传递给构建功能),请将此复选框留空。

  8. Commit Status Publisher 可以通过在评审的 评论 标签下发布构建结果(成功/失败),并更新 测试 部分,通知 Swarm 用户关于当前 TeamCity 构建状态的信息。

    Swarm 中的 TeamCity 评论
    评审的测试部分

    使用 Code Review Comments 复选框来指定 Commit Status Publisher 是否应将这些评论发布到相应的 Swarm review 标签页。

  9. 点击 Test Connection 以验证 Commit Status Publisher 是否可以访问您的 Swarm 实例。 如果您遇到 "Provided credentials lack admin permissions" 错误,请确保您不是在尝试为非管理员用户凭据启用 Create Swarm Tests 选项。

  10. 点击 Save 将构建功能添加到您的配置中。

集成特性

在您设置了 Commit Status Publisher 之后,修改并搁置任何 depot 文件。 在 Helix Swarm 中打开这个已搁置的更改,然后点击 请求审查。 这将触发一个 Helix Swarm 测试,该测试将向 TeamCity 发送一个请求以启动新的构建。 如果您的集成使用手动配置的工作流程和测试,审查会显示 Tests 部分,该部分指示当前的测试 / 构建状态。

评审的测试部分

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

在 TeamCity 中的个人构建

您也可以从构建的 Changes 标签页查看相关的更改:

打开 Swarm 来自 TeamCity 的更改

当 TeamCity 构建完成时,Commit Status Publisher 可以在 Helix Swarm 审查的 评论 部分下发布一个新的评论来公布结果。

Swarm 中的 TeamCity 评论

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

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