使用 Cloud Deploy 通知

本頁面說明如何使用 Cloud Deploy 服務通知,包括如何訂閱通知。

Cloud Deploy 會使用 Pub/Sub 發布通知,目的有二:

  • 讓您將 Cloud Deploy 與第三方工具和其他 Google 工具整合,例如工作流程支援單或測試基礎架構的工具。

  • 如要使用額外的商業邏輯擴充 Cloud Deploy。

可用的主題

Cloud Deploy 會將訊息發布至下列 Google Pub/Sub 主題:

  • clouddeploy-resources

    針對任何 Cloud Deploy 核心資源 (自動化、自訂目標類型、發布管道、工作執行、版本、推出、目標) 執行作業 (建立、更新、刪除)。

  • clouddeploy-operations

    • Cloud Deploy 算繪 Skaffold 設定時。
    • Cloud Deploy 部署至目標 (StartSucceedFailureTerminated (工作執行)、Cancelled (推出))。
  • clouddeploy-approvals

    • Cloud Deploy 需要核准 (或拒絕) 推出作業。
    • 推出作業獲得核准或拒絕。
  • clouddeploy-advances

    • Cloud Deploy 推出作業從一個階段推進至下一個階段。
    • 當推播作業準備好要進展時。

您可以針對 Pub/Sub 訂閱項目使用推送或提取模型

接收 Cloud Deploy 服務通知

如要接收 Cloud Deploy 服務通知,請按照下列步驟操作:

  1. 為專案啟用 Cloud Deploy API:

    啟用 Cloud Deploy API

  2. 啟用 Pub/Sub API:

    啟用 Pub/Sub API

  3. 根據您要接收的通知類型,建立 Pub/Sub 主題:

    gcloud pubsub topics create clouddeploy-resources
    gcloud pubsub topics create clouddeploy-operations
    gcloud pubsub topics create clouddeploy-approvals
    gcloud pubsub topics create clouddeploy-advances
    

    如要進一步瞭解如何管理 Pub/Sub 主題,請參閱「管理主題和訂閱」。

訂閱 Cloud Deploy 服務通知

您可以透過多種方式訂閱通知。例如,您可以將訊息推送至端點,或撰寫輪詢訂閱項目的 Python 應用程式

如要瞭解如何為 Cloud Deploy 服務通知設定 Pub/Sub 訂閱項目,請參閱 Pub/Sub 訂閱者指南。您也可以瞭解 Pub/Sub 用戶端程式庫,這有助於更輕鬆地開發訂閱者應用程式。

欄位值

本節列出 Cloud Deploy Pub/Sub 訊息中欄位的可能值。

適用於 Action

在這些通知中,Action 的可能值如下。

  • 資源

    • Create
    • Update
    • Delete
  • 適用於作業:

    • Start
    • Succeed
    • Failure
    • Terminated
    • Cancelled
  • 核准作業:

    • Required
    • Approved
    • Rejected
  • 預付款:

    • Required
    • Advanced

適用於 ResourceType

ResourceType 的可能值如下:

  • DeliveryPipeline
  • Target
  • Release
  • Rollout
  • JobRun

範例訊息

以下範例顯示 Cloud Deploy 主題中的多種 Pub/Sub 訊息。

建立推送管道

以下是 Pub/Sub 訊息的範例,當系統建立新 deliveryPipeline 時,這則訊息會發布至 clouddeploy-resources

{
  "ackId":   "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQBQgUBXx9cEFMdVhddmhRDRlyfWByY11AAgVMVnldURsHaE5tdR_Wg6LHS0NVaF4TBgpGVX5fXx0IYVtedi_m7r_2wPXOXkAvOYXL6Mtpe735h9xvZiM9XxJLLD5-IzRFQV5AEkwoAURJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Create",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest",
      "ResourceType": "DeliveryPipeline",
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",

    },
    "messageId": "2407836004659723",
    "publishTime": "2021-05-17T21:24:48.204Z"
  }
}

轉譯作業開始時間

以下是發布至 clouddeploy-operations 的 Pub/Sub 訊息範例,用於通知已完成發布:

{
  "ackId": "U0RQBhYsXUZIUTcZCGhRDk9eIz81IChFFwYIFAV8fXBBTHVeXHRoUQ0Zcn1gcmNfR1MLFlN5WFEaB2hObXUfioKix0tDVWheEwYKRVZ3W1kdBGFVXH0v_qD5rMP1zl5AKDnZyujLaXudkqxfZiM9XxJLLD5-PTNFQV5AEkw2BkRJUytDCypYEU4EISE-MD5F",
  "message": {
    "attributes": {
      "Action": "Start",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2",
      "ResourceType": "Release"
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",
      "ReleaseId": "f2",
    },
    "messageId": "2407805942699908",
    "publishTime": "2021-05-17T21:28:04.201Z"
  }
}

必須獲得核准

以下是發布至 clouddeploy-approvals 的 Pub/Sub 訊息範例,用於通知需要核准才能推出的功能:

{
   "ackId": "RVNEUAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRILUxNRXHQBWhBpWF8aB1ENGXJ8ZnxtCRBVU0FWf1VbEQ16bVxti6C2rERfQXduWhQJBkBXd11aHQhoXF9dotnkpeTv2kFwYSuN8_7mSH_Mo6AYZiA9XBJLLD5-IzZFQV5AEkwoA0RJUytDCypYEU4EISE-MD4",
   "message": {
     "attributes": {
       "Action": "Required",
       "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123"
       "ReleaseId": "f2",
       "RolloutId": "rollout-123",
       "TargetId": "prod",
       "Location": "us-central1",
       "ProjectNumber": "120123456789",
     },
     "messageId": "2407845492165003",
     "publishTime": "2021-05-17T21:31:25.143Z"
   }
 }

進展至下一個推出階段

以下是發布至 clouddeploy-advances 的 Pub/Sub 訊息範例,用於通知推出作業已從一個階段推進至下一個階段:

{
  "ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUSAwVPAihdeTFXKkFZdWhRDRlyfWB9bV4UUFZMV38OURoHaE5tdR_z4ILjS0NVbVkQBApEUHldXhkEa1RcfC-a0fmv1OzMV0AvOaCoyO9pe77r3NluZiM9XhJLLD5-Jz1FQV5AEkwsCERJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Advanced",
      "Location": "us-central1",
      "PhaseId": "stable",
      "ProjectNumber": "120123456789",
      "ReleaseId": "rollout-123",
      "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123",
      "RolloutId": "rollout-123",
      "TargetId": "prod"
    },
    "messageId": "7335813725293809",
    "publishTime": "2023-04-03T15:16:30.425Z"
  }
}

在這則訊息中,PhaseId 會指出推行作業已進展到哪個階段。

後續步驟