您可以將 Cloud Deploy 與其他軟體推送系統整合。本頁面說明如何整合 Cloud Deploy 與下列項目:
- 測試工具
- 工作流程管理
請參閱「整合 CI 系統」,瞭解如何從 CI 管道呼叫 Cloud Deploy。
事前準備
本頁的操作說明假設您已符合下列條件:
您已定義至少一個目標,且發布管道會參照該目標。
您已設定 Pub/Sub 通知,可接收下列主題的通知:
clouddeploy-operationsclouddeploy-approvals
與自動化測試整合
您可以搭配使用 Cloud Deploy 和 Pub/Sub,將測試整合至推送管道,以便自動升級版本,實現持續推送軟體更新。
您也可以在推出版本時使用註解,提供測試結果的連結。詳情請參閱「搭配 Cloud Deploy 使用標籤和註解」。
使用 Pub/Sub 自動執行升級作業
監聽
clouddeploy-operations主題的 Pub/Sub 訊息。訊息包含下列屬性:
Action: SUCCEEDResourceType: RolloutResource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...
收到部署成功的通知後,請在已部署的應用程式上執行測試。
測試成功後,請呼叫 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。
如要設定外部核准工作流程,請按照下列步驟操作:
-
在該目標的定義中,加入
requireApproval: true。 如要取用訊息,請訂閱
clouddeploy-approvalsPub/Sub 主題,並設定工作流程管理系統。工作流程管理系統收到來自
clouddeploy-approvals主題的訊息 (包含"Action": "Required") 時,就會啟動核准工作流程,並根據貴機構的需求進行設定。訊息中也會以以下格式提及待核准的推出作業:
Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...核准工作流程的輸出內容為核准或拒絕推出作業。
工作流程管理系統會以以下指令的形式,將核准或拒絕傳回給 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