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

添加 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. 单击生成新的 API 令牌
        1. 输入令牌名称。
        2. 在“组织角色”下,选择组织所有者
        3. 在“服务角色”下,单击以展开 VMware Code Stream,然后选择 Code Stream 管理员
        4. 单击生成

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

      6. 单击复制图标。

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

      如果创建变量,则 API 令牌将显示所输入的变量名称。如果复制令牌,则 API 令牌将显示经过屏蔽的令牌。

      触发器 SaaS 的 Gerrit 侦听器

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

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

    文件包含和排除示例

    • 对于文件包含,提交对 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. 单击创建
    默认情况下,触发器显示为新卡并且已禁用。
  12. 在触发器卡中,单击启用
    启用触发器后,它将使用 Gerrit 侦听器开始监控 Gerrit 项目的分支上发生的事件。
    创建触发器时,需要包括进行代码提交的存储库。例如,如果要创建具有相同文件包含或排除条件但具有不同存储库的触发器,则可以单击触发器卡视图上的 操作 > 克隆。然后,在新触发器上单击 打开,并更改参数。

结果

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

后续步骤

在 Gerrit 项目中提交代码更改之后,在 Code Stream 的“活动”选项卡中检查 Gerrit 事件。请验证活动列表是否包含与触发器中配置的每个管道执行对应的条目。发生某个事件时,只会运行 Gerrit 触发器中与该特定事件类型相关的管道。在此示例中,如果创建修补程序集,只会运行 Gerrit-Trigger-PipelineGerrit-Demo-Pipeline

“活动”选项卡上列中的信息描述了每个 Gerrit 触发器事件。可以选择要显示的列。
  • 如果触发器是直接 Git 推送,则“更改主题”和“执行”列为空。
  • “Gerrit 触发器”列显示创建事件的触发器。
  • 默认情况下,“侦听器”处于关闭状态。如果选中,将显示接收事件的 Gerrit 侦听器。一个侦听器可与多个触发器相关联。
  • 默认情况下,“触发器类型”处于关闭状态。如果选中,则会显示触发器是手动触发还是自动触发。

Gerrit 触发器活动

要控制执行完成或失败的活动,请单击“活动”屏幕上任何条目左侧的三个点。
  • 如果由于管道模型错误或其他问题而导致管道无法运行,请更正错误,然后选择重新运行以再次运行。
  • 如果由于网络连接问题或其他问题而导致管道无法运行,请选择继续以重新启动同一管道执行。这样做可以节省运行时间。
  • 使用查看执行转到“执行”屏幕。请参见如何运行管道和查看结果
  • 使用删除从“活动”屏幕中删除条目。
如果 Gerrit 事件无法触发管道,可以单击 手动触发按钮,然后输入 Gerrit 触发器的名称和更改 ID。

由于 Gerrit 服务器和管道云代理之间的连接断开,可能会丢失 Gerrit 事件。连接断开可能持续长达 10 分钟。如果升级或重新启动 Gerrit 服务器,则可能会断开连接。如果升级管道云代理,也可能会出现此问题。