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