Cloud Deploy は、ソフトウェアのデリバリーに使用している他のシステムと統合できます。このページでは、Cloud Deploy を次のものとともに統合する方法について説明します。
- テストツール
- ワークフロー管理
CI パイプラインから Cloud Deploy を呼び出す方法については、CI システムとの統合をご覧ください。
始める前に
このページの手順は、すでに次の条件を満たしていることを前提としています。
少なくとも 1 つのターゲットが定義され、そのターゲットを参照しているデリバリー パイプラインを参照している。
次のトピックから通知を受け取るように Pub/Sub 通知を設定している。
clouddeploy-operationsclouddeploy-approvals
自動テストとの統合
Pub/Sub で Cloud Deploy を使用すると、デリバリー パイプラインにテストを統合できるため、継続的デリバリーに合わせてリリースを自動的に昇格できます。
ロールアウトのアノテーションを使用して、テスト結果へのリンクを提供することもできます。詳細については、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,...
は、1 つ以上の Key-Value 文字列ペアのカンマ区切りのリストです。これには、テスト結果やその他のテスト情報を含めることができます。次に例を示します。
gcloud deploy releases promote --annotations="from_target=test,status=stable"ロールアウトのアノテーションは不変であるため、ステータス アノテーションを追加した場合、後で同じロールアウトでそのステータスを更新することはできません。
アノテーションを使用してテスト結果にアクセスできるようにする
テスト結果にアクセスできる URL が必要な場合は、--annotations フラグを使用して、その URL をロールアウトのアノテーションとして指定できます。
次に例を示します。
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 トピックに登録し、ワークフロー管理システムを設定します。ワークフロー管理システムが
"Action": "Required"を含むclouddeploy-approvalsトピックからメッセージを受信すると、組織の要件に従って構成された承認ワークフローが開始されます。メッセージには、承認されるロールアウトへの参照も含まれます。形式は次のとおりです。
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