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