當您的建構狀態變更時,例如建立建構、建構轉變至工作狀態,以及建構完成時,Cloud Build 會在 Google Pub/Sub 主題上發布訊息。每則訊息都包含 message.data
屬性中 Build 資源的 Base64 JSON 字串表示法。您可以在 message.attributes
欄位中找到版本的專屬 ID 和狀態。
根據預設,訊息會發布至 cloud-builds
主題;您也可以在建構設定檔的 options.pubsubTopic
欄位中指定自訂主題名稱。如要進一步瞭解如何在建構設定檔中設定主題名稱,請參閱「接收建構通知的 Pub/Sub 主題」。
您可以針對 Pub/Sub 訂閱項目使用推送或提取模型。
接收建構通知
如要接收版本通知,請按照下列步驟操作:
啟用 Cloud Build API:
啟用 Cloud Build API 時,系統會自動將 Cloud Build 服務代理人服務帳戶新增至專案。服務帳戶可讓您接收來自 Pub/Sub 的版本通知。
服務帳戶的格式如下,其中 project-number 是您的專案編號:
service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
如果您在 IAM 頁面上找不到 Cloud Build 服務代理人服務帳戶,或是無法收到 Pub/Sub 的通知,請按照下列步驟在專案中新增 Cloud Build 服務代理人服務帳戶:
在 Google Cloud 控制台中開啟「IAM」頁面:
按一下「授予存取權」。
新增下列原則,其中 project-number 是您的專案編號:
service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
選取「Service Agents」 >「Cloud Build Service Agent」做為角色。
按一下 [儲存]。
啟用 Pub/Sub API:
建立
cloud-builds
主題:gcloud pubsub topics create cloud-builds
您也可以在建構設定檔中定義自訂主題名稱,讓訊息改為傳送至自訂主題。在這種情況下,您會建立具有相同自訂主題名稱的主題:
gcloud pubsub topics create topic-name
詳情請參閱接收建構作業通知的 Pub/Sub 主題。
如要進一步瞭解如何管理 Pub/Sub 主題,請參閱「管理主題和訂閱」。
推送訂閱
推送訂閱項目會將訊息傳送至您定義的 HTTP 端點,訊息會在發佈至主題時立即送出。
從推送訂閱項目送出的訊息如下所示:
{
"message": {
"attributes": {
"buildId": "abcd-efgh...",
"status": "SUCCESS"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"message_id": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
提取訂閱項目
提取訂閱項目會在訂閱應用程式提取時傳送訊息,訊息會在提取訂閱項目時送出。
從提取訂閱項目送出的訊息如下所示:
{
"receivedMessages": [
{
"ackId": "dQNNHlAbEGEIBERNK0EPKVgUWQYyODM2LwgRHFEZDDsLRk1SK...",
"message": {
"attributes": {
"buildId": "abcd-efgh-...",
"status": "SUCCESS"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"messageId": "19917247034"
}
}
]
}
訂閱建構更新通知
您可以透過多種方式訂閱建構更新通知。例如,您可以將訊息推送至端點,或撰寫輪詢訂閱項目的 Python 應用程式。
如要瞭解如何為建構更新設定 Pub/Sub 訂閱項目,請參閱 Pub/Sub 訂閱者指南。您也可以瞭解 Pub/Sub 用戶端程式庫,這有助於更輕鬆地開發訂閱者應用程式。
如要瞭解如何使用 Pub/Sub 將建構更新傳送至電子郵件或 Slack 等服務,請參閱「Cloud Build 通知器」。