配置 Pub/Sub 通知

您可以使用 Pub/Sub 接收有关 Google Cloud 代码库更改的通知。这些通知会在用户创建新代码库、删除代码库或将更改推送到现有代码库时通知您。您可以选择配置特定代码库或整个 Google Cloud 项目的通知。

要了解有关 Pub/Sub 的更多信息,请参见 什么是 Pub/Sub?

准备工作

  • 如果尚未执行此操作,请按照 添加通知的快速入门 中的步骤创建项目,安装 Git 并初始化 Cloud SDK。
  • 验证您具备创建主题和订阅所需的权限。如需了解更多信息,请参阅访问权限控制
  • 确保您拥有可以发布到主题的服务帐号。默认情况下,Cloud Source Repositories 使用 Compute Engine 默认服务帐号来发布消息。如需了解详情,请参阅 为 Cloud Source Repositories的 Pub/Sub 通知

创建 Pub/Sub 主题

对于您要为其通知的每个 Cloud Source Repositories 项目或代码库,您需要创建一个 Pub/Sub 主题。您可以使用 Google Cloud Console 或 gcloud 命令行工具创建主题。

创建主题时,您需要使用代码库的限定 URI。 限定 URI 的格式如下:

projects/[PROJECT_ID]/topics/[TOPIC_NAME]

其中:

  • [PROJECT_ID] 是您的 Google Cloud 项目 ID。
  • [TOPIC_NAME] 是主题的名称。

若要创建主题,请按照下列步骤操作。

控制台

  1. 在 Cloud Console 中,转到 Pub/Sub 主题 页面。

    转到“主题”页面

  2. 点击创建主题

  3. 在主题名称中输入 URI:

    projects/[PROJECT_ID]/topics/[TOPIC_NAME]
    

    其中:

    • [PROJECT_ID] 是您的 Google Cloud 项目 ID。
    • [TOPIC_NAME] 是主题的名称。
  4. 点击创建

    主题详细信息 页面打开。

gcloud

在终端窗口中,运行以下命令:

gcloud pubsub topics create projects/[PROJECT_ID]/topics/[TOPIC_NAME]

其中:

  • [PROJECT_ID] 是您的 Google Cloud 项目 ID。
  • [TOPIC_NAME] 是主题的名称。

如需详细了解 gcloud pubsub topics 命令,请参阅 topics 文档

创建 Pub/Sub 订阅

要接收发布到主题的事件,您需要创建 Pub/Sub 订阅

订阅者应用 会接收来自代码库主题的消息。订阅者可以通过发送通知或触发构建来响应您的代码库事件。

若要创建订阅,请按照下列步骤操作。

控制台

  1. 在 Cloud Console 中,转到 Pub/Sub 主题页面。

    转到“主题”页面

  2. 点击项目主题的名称。

  3. 点击创建订阅

    将打开 向主题添加订阅 的页面。

  4. 输入订阅名称:

    projects/[PROJECT_ID]/subscriptions/[SUBSCRIPTION_NAME]
    

    其中:

    • [PROJECT_ID] 是您的 Google Cloud 项目 ID。
    • [SUBSCRIPTION_NAME] 是 Pub/Sub 订阅的名称。
  5. “传送类型” 的设置保留为 拉取

  6. 点击创建

gcloud

在终端窗口中,运行以下命令:

gcloud pubsub subscriptions create [SUBSCRIPTION_NAME] --topic=[TOPIC_NAME]

其中:

  • [SUBSCRIPTION_NAME] 是 Pub/Sub 订阅的名称。
  • [TOPIC_NAME] 是主题的名称。

如需详细了解 gcloud pubsub subscriptions 命令,请参阅 subscriptions 文档

添加主题

您可以使用 gcloud 命令行工具将 Pub/Sub 主题与 Google Cloud 项目或代码库相关联。

要将主题与整个项目关联,请输入以下命令:

gcloud source project-configs update --add-topic=[TOPIC_NAME] --service-account=[SERVICE_ACCOUNT_NAME]

其中:

  • [TOPIC_NAME]是 Pub/Sub 主题的名称。
  • [SERVICE_ACCOUNT_NAME] 是您的 Cloud Build 服务帐号的名称。

要将主题与特定代码库相关联,请输入以下命令:

gcloud source repos update [REPOSITORY_NAME] --add-topic=[TOPIC_NAME] --service-account=[SERVICE_ACCOUNT_NAME]

其中:

  • [REPOSITORY_NAME] 是您的 Google Cloud 代码库的名称。
  • [TOPIC_NAME] 是 Pub/Sub 主题的名称。
  • [SERVICE_ACCOUNT_NAME] 是您的 Cloud Build 服务帐号的名称。

服务帐号必须与代码库位于同一项目中,并且必须具有 pubsub.topics.publish 权限才能发布有关指定主题的消息。您必须对服务帐号拥有 iam.serviceAccounts.actAs 权限。如果未指定服务帐号,则默认为 Compute Engine 默认服务帐号。

移除主题

您可以使用 gcloud 命令行工具移除项目或代码库与 Pub/Sub 主题之间的关联。

要从整个项目中移除主题,请输入以下命令:

gcloud source project-configs update --remove-topic=[TOPIC_NAME]

要从特定代码库中移除主题,请输入以下命令:

gcloud source repos update [REPOSITORY_NAME] --remove-topic=[TOPIC_NAME]

设置主题格式

Cloud Source Repositories 的通知可以使用 JSON 或 Protocol Buffers 格式。要设置主题的格式,可以在添加主题时使用 --message-format 参数:

gcloud source project-configs update --add-topic=[TOPIC_NAME] --message-format=[json|protobuf]

您也可以使用 set-format 命令:

gcloud source project-configs update --update-topic=[TOPIC_NAME] --message-format=[json|protobuf]

后续步骤