Cloud Deploy と他のシステムの統合

Cloud Deploy は、ソフトウェア デリバリーに依存する他のシステムと統合できます。このページでは、Cloud Deploy を統合する方法について説明します。

  • テストツール
  • ワークフロー管理

CI パイプラインから Cloud Deploy を呼び出す方法については、CI システムとの統合をご覧ください。

始める前に

このページで説明する手順は、次の条件を満たしていることを前提としています。

自動テストとの統合

Pub/Sub で Cloud Deploy を使用すると、デリバリー パイプラインにテストを統合できるため、継続的デリバリーに合わせてリリースを自動的に昇格できます。

ロールアウトでアノテーションを使用して、テスト結果へのリンクを提供することもできます。詳細については、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,...

      は、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 が必要です。

外部承認ワークフローを設定するには:

  1. ターゲットの承認を必須にする

    そのターゲットの定義に、requireApproval: true を含めます。

  2. メッセージを使用するには、clouddeploy-approvals Pub/Sub トピックに登録し、ワークフロー管理システムを設定します。

  3. ワークフロー管理システムが "Action": "Required" を含む clouddeploy-approvals トピックからメッセージを受信すると、組織の要件に従って構成された承認ワークフローを開始します。

    メッセージには、承認されるロールアウトへの参照も含まれます。形式は次のとおりです。

    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