您可以使用 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]
是主題名稱。
如要建立主題,請按照下列步驟操作。
主控台
在 Google Cloud 控制台中,前往 Pub/Sub 的「Topics」(主題) 頁面。
按一下 [Create Topic] (建立主題)。
使用 URI 輸入主題名稱:
projects/[PROJECT_ID]/topics/[TOPIC_NAME]
其中:
[PROJECT_ID]
是您的 Google Cloud 專案 ID。[TOPIC_NAME]
是主題名稱。
按一下 [建立]。
「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 訂閱。
訂閱者應用程式會接收來自存放區主題的訊息。訂閱者可藉由傳送通知或觸發版本來回應您的存放區事件。
如要建立訂閱項目,請按照下列步驟操作。
主控台
在 Google Cloud 控制台中,前往 Pub/Sub 的「Topics」(主題) 頁面。
按一下專案主題的名稱。
按一下 [Create Subscription] (建立訂閱項目)。
「將訂閱項目新增至主題」頁面隨即開啟。
輸入訂閱名稱:
projects/[PROJECT_ID]/subscriptions/[SUBSCRIPTION_NAME]
其中:
[PROJECT_ID]
是您的 Google Cloud 專案 ID。[SUBSCRIPTION_NAME]
是 Pub/Sub 訂閱項目的名稱。
將「Delivery type」保留設為「Pull」。
按一下 [建立]。
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]
後續步驟
- 進一步瞭解 Cloud Source Repositories 的 Pub/Sub 通知。
- 參閱 Pub/Sub 說明文件。
- 如要深入瞭解 Pub/Sub,請參閱「什麼是 Pub/Sub?」。
- 進一步瞭解 Pub/Sub 存取權控管角色。