將 Cloud Deploy 與其他系統整合

您可以將 Cloud Deploy 與其他軟體推送系統整合。本頁面說明如何整合 Cloud Deploy 與下列項目:

  • 測試工具
  • 工作流程管理

請參閱「整合 CI 系統」,瞭解如何從 CI 管道呼叫 Cloud Deploy。

事前準備

本頁的操作說明假設您已符合下列條件:

與自動化測試整合

您可以搭配使用 Cloud Deploy 和 Pub/Sub,將測試整合至推送管道,以便自動升級版本,實現持續推送軟體更新。

您也可以在推出版本時使用註解,提供測試結果的連結。詳情請參閱「搭配 Cloud Deploy 使用標籤和註解」。

使用 Pub/Sub 自動執行升級作業

  1. 監聽 clouddeploy-operations 主題的 Pub/Sub 訊息

    訊息包含下列屬性:

    • Action: SUCCEED
    • ResourceType: Rollout
    • Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...
  2. 收到部署成功的通知後,請在已部署的應用程式上執行測試。

  3. 測試成功後,請呼叫 Cloud Deploy 自動升級至下一個階段:

    gcloud deploy releases promote RELEASE_NAME \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --annotations=KEY=VALUE,...
    

    其中:

    • RELEASE_NAME

      是版本名稱,必須提供這個值。

    • PIPELINE_NAME

      是管理這個版本的推送管道名稱。必須提供這個值。

    • REGION

      是管道執行的區域。如果已設定 deploy/region 屬性,可以省略這個旗標。

    • KEY=VALUE,...

      是以半形逗號分隔的一或多個鍵/值字串配對清單,可包含測試結果和其他測試資訊。範例如下:

      gcloud deploy releases promote --annotations="from_target=test,status=stable"

      推出作業的註解無法變更,因此如果您新增狀態註解,之後就無法在同一個推出作業中更新該狀態。

使用註解提供測試結果的存取權

如果您有可存取測試結果的網址,可以使用 --annotations 標記,在推出時提供該網址做為註解。範例如下:

gcloud deploy releases promote --delivery-pipeline=my-demo-app-1 --region=us-central1 --project=my-demo-app-1-project --release=test-release-001 --annotations="test_results_url=https://example.com/results/my-demo-app-test-results-dev"

詳情請參閱「搭配 Cloud Deploy 使用標籤和註解」。

整合第三方工作流程管理服務

Cloud Deploy 會將作業訊息發布至 Pub/Sub。工作流程管理工具可以訂閱這些 Pub/Sub 主題,並使用這些主題觸發特定工作流程。

核准

當發布作業需要核准時,clouddeploy-approvals 主題會通知您的系統。外部工作流程系統接著會發揮魔法,取得核准,然後呼叫 gcloud deploy rollouts approve

發出 rollouts approve 指令的帳戶必須具備預先定義的 IAM 角色 roles/clouddeploy.approver

如要設定外部核准工作流程,請按照下列步驟操作:

  1. 須經目標核准

    在該目標的定義中,加入 requireApproval: true

  2. 如要取用訊息,請訂閱 clouddeploy-approvals Pub/Sub 主題,並設定工作流程管理系統。

  3. 工作流程管理系統收到來自 clouddeploy-approvals 主題的訊息 (包含 "Action": "Required") 時,就會啟動核准工作流程,並根據貴機構的需求進行設定。

    訊息中也會以以下格式提及待核准的推出作業:

    Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...

    核准工作流程的輸出內容為核准或拒絕推出作業。

  4. 工作流程管理系統會以以下指令的形式,將核准或拒絕傳回給 Cloud Deploy:

    核准指令如下:

    gcloud deploy rollouts approve ROLLOUT \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --release=RELEASE_NAME
    

    拒絕推出作業的指令如下:

    gcloud deploy rollouts reject ROLLOUT \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --release=RELEASE_NAME
    

    其中:

    • ROLLOUT

      是要求核准的推出作業名稱。

    • PIPELINE_NAME

      是管理應用程式部署作業的推送管道。

    • RELEASE_NAME

      是與這項推出作業相關聯的發布版本名稱。

    • REGION

      是執行推送管道的區域。

範例如下:

gcloud deploy rollouts approve test-rollout --delivery-pipeline=web-app --release=test-release --region=us-central1