設定 Pub/Sub 通知

您可以使用 Pub/Sub 接收 Google Cloud存放區的變更通知。這些通知會讓您知道使用者何時建立新存放區、刪除存放區或推送變更至現有存放區。您可以選擇針對特定存放區或整個Google Cloud 專案設定通知。

如要進一步瞭解 Pub/Sub,請參閱「什麼是 Pub/Sub?

事前準備

  • 如果您尚未建立存放區,請先建立
  • 請確認您有建立主題和訂閱的適當權限。詳情請參閱存取權控管一文。
  • 請確認您有可發布至主題的服務帳戶。根據預設,Cloud Source Repositories 會使用 Compute Engine 預設服務帳戶發布訊息。詳情請參閱「Cloud Source Repositories 的 Pub/Sub 通知」。

建立 Pub/Sub 主題

針對您想要收到通知的每個 Cloud Source Repositories 專案或存放區,您必須建立 Pub/Sub 主題。您可以使用 Google Cloud 主控台或 gcloud 指令列工具建立主題。

在建立主題時,您必須使用存放區的完整 URI。完整 URI 如下所示:

projects/[PROJECT_ID]/topics/[TOPIC_NAME]

其中:

  • [PROJECT_ID] 是您的 Google Cloud 專案 ID。
  • [TOPIC_NAME] 是主題名稱。

如要建立主題,請按照下列步驟操作。

主控台

  1. 在 Google Cloud 控制台中,前往 Pub/Sub 的「Topics」(主題) 頁面。

    前往「Topics」(主題) 頁面

  2. 按一下 [Create Topic] (建立主題)

  3. 使用 URI 輸入主題名稱:

    projects/[PROJECT_ID]/topics/[TOPIC_NAME]
    

    其中:

    • [PROJECT_ID] 是您的 Google Cloud 專案 ID。
    • [TOPIC_NAME] 是主題名稱。
  4. 按一下 [建立]。

    「Topic details」頁面隨即開啟。

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. 在 Google Cloud 控制台中,前往 Pub/Sub 的「Topics」(主題) 頁面。

    前往「Topics」(主題) 頁面

  2. 按一下專案主題的名稱。

  3. 按一下 [Create Subscription] (建立訂閱項目)

    「將訂閱項目新增至主題」頁面隨即開啟。

  4. 輸入訂閱名稱:

    projects/[PROJECT_ID]/subscriptions/[SUBSCRIPTION_NAME]
    

    其中:

    • [PROJECT_ID] 是您的 Google Cloud 專案 ID。
    • [SUBSCRIPTION_NAME] 是 Pub/Sub 訂閱項目的名稱。
  5. 將「Delivery type」保留設為「Pull」

  6. 按一下 [建立]。

gcloud

在終端機視窗中執行下列指令:

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

其中:

  • [SUBSCRIPTION_NAME] 是 Pub/Sub 訂閱項目的名稱。
  • [TOPIC_NAME] 是主題名稱。

如要進一步瞭解 gcloud pubsub subscriptions 指令,請參閱 subscriptions 說明文件

新增主題

您可以使用 Google Cloud CLI,將 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 預設服務帳戶。

移除主題

您可以使用 Google Cloud CLI 移除專案或存放區與 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 或通訊協定緩衝區格式。如要設定主題的格式,您可以在新增主題時使用 --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]

後續步驟