作为 Code Stream 管理员或开发人员,您可以使用 Git 触发器将 Code Stream 与 Git 生命周期集成。您在 GitHub、GitLab 或 Bitbucket Enterprise 中进行代码更改时,事件将通过 Webhook 与 Code Stream 通信,并触发管道。当 Cloud Assembly 与 GitLab、GitHub 和 Bitbucket 内部部署企业版本可通过同一网络进行访问时,Webhook 可用于企业版本。

Code Stream 中添加适用于 Git 的 Webhook 时,它还会在 GitHub、GitLab 或 Bitbucket 存储库中创建 Webhook。如果以后更新或删除 Webhook,该操作也会更新或删除 GitHub、GitLab 或 Bitbucket 中的 Webhook。

Webhook 定义必须在要监控的存储库分支上包括 Git 端点。要创建 Webhook, Code Stream 将使用该 Git 端点。如果该端点不存在,您可以在添加 Webhook 时创建该端点。此示例假设您在 GitHub 中有预定义的 Git 端点。

注: 要创建 Webhook,Git 端点必须使用专用令牌进行身份验证,不能使用密码。

可以通过使用同一 Git 端点并在 Webhook 配置页面中为分支名称提供不同的值,为不同的分支创建多个 Webhook。要为同一 Git 存储库中的其他分支创建其他 Webhook,无需针对多个分支多次克隆 Git 端点。只需在 Webhook 中提供分支名称,即可重用 Git 端点。如果 Git Webhook 中的分支与端点中的分支相同,则无需在 Git Webhook 页面中提供分支名称。

此示例显示了如何将 Git 触发器与 GitHub 存储库结合使用,但必备条件包括使用其他 Git 服务器类型时需要做的准备工作。

前提条件

  • 验证您是 Code Stream 中项目的成员。如果您不是其成员,则让 Code Stream 管理员将您添加为项目的成员。请参见如何在 Code Stream 中添加项目
  • 确认要监控的 GitHub 分支上有 Git 端点。请参见如何将 Code Stream 与 Git 集成
  • 确认您有权在 Git 存储库中创建 Webhook。
  • 如果在 GitLab 中配置 Webhook,则更改 GitLab Enterprise 中的默认网络设置以启用出站请求,并允许创建本地 Webhook。
    注: 仅 GitLab Enterprise 需要进行此更改。这些设置不适用于 GitHub 或 Bitbucket。
    1. 以管理员身份登录到 GitLab Enterprise 实例。
    2. 使用 URL(如 http://{gitlab-server}/admin/application_settings/network)访问网络设置。
    3. 展开出站请求,然后单击:
      • 允许从 Web hook 和服务向本地网络发出请求。
      • 允许从系统 hook 向本地网络发出请求。
  • 对于要触发的管道,确认已设置输入属性,以便在管道运行时插入 Git 参数。

    将管道配置为使用适用于 Git 的触发器时,在输入选项卡上配置输入参数。

    有关输入参数的信息,请参见在手动添加任务之前在 Code Stream 中规划 CICD 本地构建

过程

  1. Code Stream 中,单击触发器 > Git
  2. 单击适用于 Git 的 Webhook 选项卡,然后单击新建适用于 Git 的 Webhook
    1. 选择一个项目。
    2. 为 Webhook 输入有意义的名称和说明。
    3. 选择为要监控的分支配置的 Git 端点。
      创建 Webhook 时,Webhook 定义包含当前端点的详细信息。
      • 如果稍后在端点中更改 Git 类型、Git 服务器类型或 Git 存储库 URL,则 Webhook 将无法再触发管道,因为它将尝试使用原始端点详细信息访问 Git 存储库。必须删除 Webhook,然后重新创建包含该端点的 Webhook。
      • 如果稍后更改端点中的身份验证类型、用户名或专用令牌,则 Webhook 将继续工作。
      • 如果使用的是 BitBucket 存储库,则存储库的 URL 必须采用以下格式之一:https://api.bitbucket.org/{user}/{repo name}http(s)://{bitbucket-enterprise-server}/rest/api/1.0/users/{username}/repos/{repo name}
      注: 如果之前创建了使用 Git 端点(使用密码进行基本身份验证)的 Webhook,则必须删除该 Webhook,然后重新定义具有 Git 端点(使用专用令牌进行身份验证)的 Webhook。
      请参见 如何将 Code Stream 与 Git 集成
    4. (可选) 输入希望 Webhook 监控的分支。
      如果未指定分支,则 Webhook 将监控为 Git 端点配置的分支。
    5. (可选) 为 Webhook 生成密钥令牌。
      如果使用密钥令牌, Code Stream 会为 Webhook 生成随机字符串令牌。随后,当 Webhook 收到 Git 事件数据时,它会将数据与密钥令牌一起发送。 Code Stream 使用这些信息来确定调用是否来自预期的源,例如已配置的 GitHub 实例、存储库和分支。密钥令牌可提供额外的安全层,用于验证 Git 事件数据是否来自正确的源。
    6. (可选) 提供文件包含或文件排除作为触发器的条件。
      • 文件包含。如果提交中的任何文件与包含路径或正则表达式中指定的文件匹配,则提交将触发管道。如果指定正则表达式,则 Code Stream 仅当更改集中的文件名与提供的表达式匹配时才触发管道。为单个存储库中的多个管道配置触发器时,正则表达式筛选器很有用。
      • 文件排除。当提交中的所有文件与排除路径或正则表达式中指定的文件匹配时,不会触发管道。
      • 排除优先。打开“排除优先”时,可确保即使提交中的任何文件与排除路径或正则表达式中指定的文件匹配也不触发管道。默认设置为“关闭”。
      如果条件同时满足文件包含和文件排除,则不会触发管道。

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

      文件包含和文件排除及其值显示在 Git 触发器中的适用于 Git 的 Webhook 选项卡上,可以是纯文本或正则表达式。

      • 对于文件包含,提交对 runtime/src/main/a.java 或任意 java 文件的任何更改都将触发事件配置中配置的管道。
      • 对于文件排除,仅提交同时对这两个文件的更改不会触发事件配置中配置的管道。
    7. 对于 Git 事件,选择推送提取请求。
    8. 输入 API 令牌。
      VMware Cloud Services API 令牌将对您进行身份验证,以与 Code Stream 建立外部 API 连接。要获取 API 令牌,请执行以下操作:
      1. 单击生成令牌
      2. 输入与您的用户名和密码关联的电子邮件地址,然后单击生成
        所生成令牌的有效期为六个月。该令牌也称为刷新令牌。
        • 要将令牌保留为变量以供将来使用,请单击创建变量,输入变量的名称,然后单击保存
        • 要将令牌保留为文本值以供将来使用,请单击复制,然后将令牌粘贴到文本文件中以在本地保存。
        您可以选择创建变量并将令牌存储在文本文件中,以供将来使用。
      3. 单击关闭
    9. 选择 Webhook 要触发的管道。
      如果管道包括自定义添加的输入参数,则“输入参数”列表将显示参数和值。您可以输入通过触发器事件传递到管道的输入参数的值。或者,也可以将这些值留空,或使用默认值(如果已定义)。

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

    10. 单击创建
      Webhook 将显示为新卡。
  3. 单击该 Webhook 卡。
    重新显示 Webhook 数据表单时,您会看到 Webhook URL 添加到表单顶部。Git Webhook 通过该 Webhook URL 连接到 GitHub 存储库。

    在 Git 存储库中复制和使用的 Git Webhook URL 显示在适用于 Git 的触发器的适用于 Git 的 Webhook 选项卡上。

  4. 在新的浏览器窗口中,打开通过 Webhook 连接的 GitHub 存储库。
    1. 要查看在 Code Stream 中添加的 Webhook,请单击设置选项卡,然后选择 Webhook
      在 Webhook 列表的底部,您会看到相同的 Webhook URL。

      在 GitHub 存储库中,Webhook 列表在列表底部显示相同的 Git Webhook URL。

    2. 要更改代码,请单击代码选项卡,然后在分支上选择一个文件。编辑该文件后,提交更改。
    3. 要验证 Webhook URL 是否正常运行,请单击设置选项卡,然后再次选择 Webhook
      在 Webhook 列表的底部,Webhook URL 旁边会显示一个绿色勾选标记。 GitHub 中的 Webhook 有效时,将显示绿色勾选标记。
  5. 返回 Code Stream 以查看 Git Webhook 上的活动。单击触发器 > Git > 活动
    在“执行状态”下,验证管道运行是否已启动。

    用户提交文件时,会激活 Git 触发器,且活动选项卡显示该触发器的状态为“已启动”。

  6. 单击执行,并在管道运行过程中跟踪管道。
    要观察管道运行,可以按刷新。

    管道触发后,管道运行状态显示为“正在运行”。

结果

恭喜!您已成功使用 Git 触发器!