Cloud Deploy は、ソフトウェア デリバリーに依存する他のシステムと統合できます。このページでは、Cloud Deploy を統合する方法について説明します。
- テストツール
- ワークフロー管理
CI パイプラインから Cloud Deploy を呼び出す方法については、CI システムとの統合をご覧ください。
始める前に
このページで説明する手順は、次の条件を満たしていることを前提としています。
少なくとも 1 つのターゲットが定義され、そのターゲットを参照しているデリバリー パイプラインを参照している。
次のトピックから通知を受け取るように Pub/Sub 通知を設定している。
clouddeploy-operations
clouddeploy-approvals
自動テストとの統合
Pub/Sub で Cloud Deploy を使用すると、デリバリー パイプラインにテストを統合できるため、継続的デリバリーに合わせてリリースを自動的に昇格できます。
ロールアウトでアノテーションを使用して、テスト結果へのリンクを提供することもできます。詳細については、Cloud Deploy でのラベルとアノテーションの使用をご覧ください。
Pub/Sub を使用して昇格を自動化する
clouddeploy-operations
トピックから Pub/Sub メッセージをリッスンします。このメッセージには次の属性が含まれています。
Action: SUCCEED
ResourceType: Rollout
Resource: 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-approvals
Pub/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