作为 Code Stream 管理员或开发人员,您可以使用 Gerrit 触发器将 Code Stream 云服务与 Gerrit 代码审阅生命周期集成。在 Gerrit 项目上创建修补程序集、发布草稿、合并代码更改或直接在 Git 分支上推送更改时,事件将触发管道运行。

添加 Gerrit 触发器时,可以选择 Gerrit 侦听器、Gerrit 服务器上 Gerrit 项目,然后配置 Gerrit 事件。在以下示例中,先配置 Gerrit 侦听器,然后在三个不同管道上具有两个事件的 Gerrit 触发器中使用该侦听器。

前提条件

过程

  1. Code Stream 中,单击触发器 > Gerrit
  2. (可选) 单击侦听器选项卡,然后单击新建侦听器
    注: 如果已定义计划用于 Gerrit 触发器的 Gerrit 侦听器,则跳过此步骤。
    1. 选择一个项目。
    2. 输入 Gerrit 侦听器的名称。
    3. 选择 Gerrit 端点。
    4. 输入 API 令牌。
      CSP API 令牌将对您进行身份验证,以与 Code Stream 建立外部 API 连接。要获取 API 令牌,请执行以下操作:
      1. 登录到 vRealize Automation Cloud
      2. 单击您的用户名旁边的下拉箭头。
      3. 单击我的帐户
      4. 单击 API 令牌
      5. 单击生成令牌
        1. 输入令牌名称。
        2. 在“组织角色”下,选择组织所有者
        3. 在“服务角色”下,单击以展开 VMware Code Stream,然后选择 Code Stream 管理员
        4. 单击生成

          生成的令牌窗口将显示一个令牌,其中包含您指定的名称和组织的名称。

      6. 单击复制图标。

        单击复制可确保您捕获准确的字符串,比使用指针来复制字符串更可靠。

      如果创建变量,则 API 令牌将显示通过使用美元绑定输入的变量名称。如果复制令牌,则 API 令牌将显示经过屏蔽的令牌。

      对于云实例,Gerrit 触发器侦听器使用 Gerrit 端点和 API 令牌,可以从 VMware Cloud Services 控制台中的我的帐户生成 API 令牌。

    5. 要验证令牌和端点详细信息,请单击验证
      您的令牌将在 90 天后过期。
    6. 单击创建
    7. 在侦听器卡视图上,单击连接
      侦听器将开始监控 Gerrit 服务器上的所有活动,并侦听该服务器上已启用的任何触发器。要停止侦听该服务器上的触发器,请禁用该触发器。
  3. 单击触发器选项卡,然后单击新建触发器
  4. 选择 Gerrit 服务器上的项目。
  5. 输入名称。
    Gerrit 触发器名称必须唯一。
  6. 选择已配置的 Gerrit 侦听器。
    通过使用 Gerrit 侦听器, Code Stream 提供服务器上可用的 Gerrit 项目列表。
  7. 选择 Gerrit 服务器上的项目。
  8. 输入存储库中 Gerrit 侦听器将监控的分支。
  9. (可选) 提供文件包含或文件排除作为触发器的条件。
    • 提供文件包含以触发管道。当提交中的任何文件与包含路径或正则表达式中指定的文件匹配时,将触发管道。指定正则表达式时, Code Stream 仅触发更改集中的文件名与提供的表达式匹配的管道。为单个存储库中的多个管道配置触发器时,正则表达式筛选器很有用。
    • 提供文件排除以防止管道触发。当提交中的所有文件与排除路径或正则表达式中指定的文件匹配时,不会触发管道。
    • 排除优先打开时,可确保不会触发管道。即使提交中的任何文件与排除路径或正则表达式中指定的文件匹配,也不会触发管道。排除优先默认设置为关闭。
    如果条件同时满足文件包含和文件排除,则不会触发管道。

    在以下示例中,文件包含和文件排除都是触发器的条件。

    文件包含和文件排除显示为具有值的 PLAIN 对或 REGEX 对。

    • 对于文件包含,提交对 runtime/src/main/a.java 或任意 java 文件的任何更改都将触发事件配置中配置的管道。
    • 对于文件排除,仅提交同时对这两个文件的更改不会触发事件配置中配置的管道。
  10. 单击新建配置
    1. 对于 Gerrit 事件,选择修补程序集已创建草稿已发布更改已合并。或者,要绕过 Gerrit 直接推送到 Git,选择直接 Git 推送
    2. 选择将触发的管道。
      如果管道包括自定义添加的输入参数,则“输入参数”列表将显示参数和值。您可以输入将通过触发器事件传递到管道的输入参数的值。或者,也可以将这些值留空,或使用默认值。
      注: 如果定义了默认值:
      • 为输入参数输入的任何值都将替代在管道模型中定义的默认值。
      • 如果管道模型中的参数值发生更改,则触发器配置中的默认值不会更改。

      有关 Gerrit 触发器的自动插入输入参数的信息,请参见必备条件

    3. 对于修补程序集已创建草稿已发布更改已合并,默认情况下某些操作会与标签一起出现。可以更改标签或添加注释。然后,当管道运行时,标签或注释将作为对该管道执行的操作显示在活动选项卡上。
    4. 单击保存
    要为多个管道添加多个触发器事件,请再次单击 新建配置
    在以下示例中,您可以看到三个管道的事件:
    • 如果 Gerrit 项目中发生更改已合并事件,则会触发名为 Gerrit-Pipeline 的管道。
    • 如果 Gerrit 项目中发生修补程序集已创建事件,则会触发名为 Gerrit-Trigger-PipelineGerrit-Demo-Pipeline 的管道。

    Gerrit 侦听器和触发器的配置包括事件类型和可触发的管道。

  11. 单击创建
    Gerrit 触发器在 触发器选项卡上显示为新的卡视图,并默认设置为 已禁用
  12. 在触发器卡中,单击启用
    启用触发器后,可以使用 Gerrit 侦听器,该侦听器将开始监控 Gerrit 项目分支上发生的事件。
    要创建一个触发器(具有相同的文件包含条件或文件排除条件,但存储库不同于创建触发器时所包含的存储库),请在触发器卡视图上单击 操作 > 克隆。然后,在克隆的触发器上,单击 打开,然后更改参数。

结果

恭喜!您已成功配置在三个不同管道上具有两个事件的 Gerrit 触发器。

后续步骤

在 Gerrit 项目中提交代码更改之后,在 Code Stream活动选项卡中查看 Gerrit 事件。验证活动列表是否包含与触发器配置中的每个管道执行对应的条目。

发生事件时,只能运行 Gerrit 触发器中与该特定事件类型相关的管道。在此示例中,如果创建修补程序集,只会运行 Gerrit-Trigger-PipelineGerrit-Demo-Pipeline

活动选项卡上列中的信息描述了每个 Gerrit 触发器事件。可以通过单击表下方的列图标选择显示的列。
  • 如果触发器是直接 Git 推送,则更改主题执行列为空。
  • Gerrit 触发器列显示创建事件的触发器。
  • 默认情况下,侦听器列处于关闭状态。选择该列后,该列将显示接收事件的 Gerrit 侦听器。单个侦听器可能显示与多个触发器关联。
  • 默认情况下,触发器类型列处于关闭状态。选择该列后,该列将触发器类型显示为“自动”或“手动”。
  • 其他列包括提交时间更改号码状态消息执行的操作用户Gerrit 项目分支事件

Gerrit 触发器的活动选项卡显示所有选定列,以及每列中所有活动条目的相关信息。

要控制管道运行完成或失败的活动,请单击“活动”屏幕上任何条目左侧的三个点。

  • 如果由于管道模型错误或其他问题而导致管道无法运行,请更正错误,然后选择重新运行以再次运行管道。
  • 如果由于网络连接问题或其他问题而导致管道无法运行,请选择继续以重新启动同一管道执行,从而节省了运行时间。
  • 使用查看执行可打开管道执行视图。请参见如何运行管道和查看结果
  • 使用删除从“活动”屏幕中删除条目。

如果 Gerrit 事件无法触发管道,可以单击手动触发,然后选择 Gerrit 触发器,输入“更改 ID”,并单击运行

由于 Gerrit 服务器和管道云代理之间的连接中断,Gerrit 事件可能会缺失。连接中断可能持续长达 10 分钟。升级或重新启动 Gerrit 服务器或者升级管道云代理时,可能会发生连接中断。