コードのデプロイメント code-deployment

コードをデプロイする方法と、デプロイ時に Cloud Manager で何が行われるかを説明します。

Cloud Manager でのコードのデプロイ deploying-code-with-cloud-manager

必要なリポジトリと環境を含む実稼動パイプラインを設定すると、コードをデプロイする準備が整います。

  1. Cloud Manager で「デプロイ」をクリックして、デプロイメントプロセスを開始します。

    「デプロイ」ボタン

  2. パイプライン実行 ​画面が表示されます。「ビルド」をクリックしてプロセスを開始します。

    「作成」ボタン

ビルドプロセスは、次のステップを含むコードデプロイメントプロセスを開始します。

  • ステージデプロイメント
  • ステージテスト
  • 実稼働デプロイメント

テスト条件のログを表示したり結果を確認したりすることで、様々なデプロイメントプロセスのステップを確認できます。

デプロイメントステップ deployment-steps

デプロイメントの各ステップでは、多数のアクションが実行されます。この節では、これらについて説明します。コード自体の内部的なデプロイ方法に関する技術的な詳細については、デプロイメントプロセスの詳細の節を参照してください。

ステージデプロイメントステップ stage-deployment

ステージデプロイメント ​ステップには、次のアクションが含まれます。

  • 検証:このステップでは、現在使用できるリソースを使用するようにパイプラインが設定されていること(設定済みのブランチが存在することや環境が使用可能であることなど)を確認します。
  • ビルドテストと単体テスト:このステップでは、コンテナ化されたビルドプロセスを実行します。詳しくは、ビルド環境のドキュメントを参照してください。
  • コードスキャン:このステップでは、アプリケーションコードの品質を評価します。テストプロセスについて詳しくは、テスト結果についてのドキュメントを参照してください。
  • ステージにデプロイ

ステージデプロイメント

ステージテスト手順 stage-testing

ステージテスト ​ステップには、次のアクションが含まれます。

  • セキュリティテスト:このステップでは、AEM 環境でのアプリケーションコードのセキュリティに対する影響を評価します。テストプロセスについて詳しくは、テスト結果についてのドキュメントを参照してください。

    • パフォーマンステスト:このステップでは、コードのパフォーマンスを評価します。テストプロセスについて詳しくは、テスト結果についてを参照してください。

    ステージテスト

実稼動デプロイメントステップ production-deployment

実稼動デプロイメント ​ステップには、次のアクションが含まれます。

  • 承認の申請

    • このオプションは、パイプラインの設定時に有効になっています。
    • このオプションを使用すると、実稼動デプロイメントのスケジュールを設定したり、「今すぐ」をクリックして実稼動デプロイメントを即座に実行したりできます。
  • 実稼動デプロイメントをスケジュール

    • このオプションは、パイプラインの設定時に有効になっています。
    • スケジュールされた日時は、ユーザーのタイムゾーンで指定されます。
      デプロイメントのスケジュール設定
  • CSE サポート(有効な場合)

  • 実稼働環境にデプロイ

実稼働デプロイメント

デプロイメントが完了すると、コードはターゲット環境に配置され、ログを確認できます。

デプロイメント完了

タイムアウト timeouts

ユーザーのフィードバックを待機したままにすると、次の手順はタイムアウトします。

ステップ
タイムアウト
コード品質テスト
7 日
セキュリティテスト
7 日
パフォーマンステスト
7 日
承認の申請(段階)
7 日
承認の申請(実稼働)
14 日
実稼動デプロイメントをスケジュール
14 日
管理された実稼動のデプロイメント
14 日

デプロイメントプロセスの詳細 deployment-process

Cloud Manager は、ビルドプロセスで生成されたすべての target/*.zip ファイルを保存場所にアップロードします。これらのアーティファクトは、パイプラインのデプロイフェーズで、この場所から取得されます。

Cloud Manager が実稼動以外のトポロジにデプロイされる場合、目的はできるだけ早くデプロイメントを完了することです。そのため、アーティファクトは、以下のようにすべてのノードに同時にデプロイされます。

  1. Cloud Manager は、各アーティファクトが AEM または Dispatcher パッケージであるかどうかを判断します。

  2. Cloud Manager は、デプロイメント時に、すべてのディスパッチャーをロードバランサーから削除して環境を分離します。

    • 特に設定しない限り、開発環境とステージング環境のデプロイメントではロードバランサーの変更をスキップできます。つまり、開発環境では非実稼動パイプラインのデタッチとアタッチの両方のステップ、ステージング環境では実稼動パイプラインのステップをスキップできます。

    ロードバランサーをスキップ

    note note
    NOTE
    この機能は、主に 1-1-1 のお客様が使用すると想定されています。
  3. 各 AEM アーティファクトは、パッケージマネージャー API を介して各 AEM インスタンスにデプロイされ、パッケージの依存関係がデプロイメントの順序を決定します。

    • 新機能のインストール、インスタンス間のコンテンツの転送、リポジトリコンテンツのバックアップにパッケージを使用する方法について詳しくは、パッケージマネージャーのドキュメントを参照してください。
    note note
    NOTE
    すべての AEM アーティファクトは、オーサーとパブリッシャーの両方にデプロイされます。ノード専用の設定が必要な場合は、実行モードを使用する必要があります。実行モードを使用して、特定の目的のために AEM インスタンスを調整する方法について詳しくは、ドキュメント「AEM as a Cloud Service へのデプロイ」の実行モードの節を参照してください。
  4. Dispatcher のアーティファクトは、以下のように各 Dispatcher にデプロイされます。

    1. 現在の設定はバックアップされ、一時的な場所にコピーされます。
    2. すべての設定は、不変ファイルを除いて削除されます。詳しくは、ドキュメント Dispatcher の設定を参照してください。これにより、孤立したファイルが残らないようにディレクトリがクリアされます。
    3. アーティファクトは、httpd ディレクトリに抽出されます。不変ファイルは上書きされません。Git リポジトリー内の不変ファイルに対して加えた変更は、デプロイメント時に無視されます。これらのファイルは、AMS ディスパッチャーフレームワークのコアであり、変更できません。
    4. Apache が設定テストを実行します。エラーが見つからない場合は、サービスが再読み込みされます。エラーが発生した場合、設定がバックアップから復元され、サービスが再読み込みされて、エラーが Cloud Manager にレポートされます。
    5. パイプライン設定で指定された各パスは、無効化または Dispatcher キャッシュからフラッシュされます。
    note note
    NOTE
    Cloud Manager では、Dispatcher アーティファクトに完全なファイルセットが含まれていることが想定されています。すべての Dispatcher 設定ファイルが、Git リポジトリーに存在する必要があります。ファイルやフォルダーが見つからない場合、デプロイメントに失敗します。
  5. すべての AEM および Dispatcher パッケージのすべてのノードへのデプロイメントが正常に完了すると、Dispatcher がロードバランサーに再追加され、デプロイメントが完了します。

    note note
    NOTE
    開発およびステージングデプロイメントでのロードバランサーの変更をスキップできます。つまり、開発環境では非実稼動パイプラインの両方でのデタッチとアタッチの手順、ステージング環境では実稼動パイプラインをスキップできます。

実稼動フェーズへのデプロイメント deployment-production-phase

AEM サイト訪問者への影響を最小限に抑えるために、実稼動トポロジーへのデプロイプロセスはわずかに異なります。

実稼動のデプロイメントは、通常、上記と同じ手順に従いますが、周期的な方法で実行します。

  1. オーサーに AEM パッケージをデプロイします。
  2. dispatcher1 をロードバランサーから分離します。
  3. AEM パッケージを publish1 にデプロイし、並行して Dispatcher パッケージを dispatcher1 にデプロイして、Dispatcher キャッシュを消去します。
  4. dispatcher1 をロードバランサーに戻します。
  5. dispatcher1 がサービスを再開したら、dispatcher2 をロードバランサーから分離します。
  6. AEM パッケージを publish2 にデプロイし、並行して Dispatcher パッケージを dispatcher2 にデプロイして、Dispatcher キャッシュをフラッシュします。
  7. dispatcher2 をロードバランサーに戻します。

このプロセスは、デプロイメントがトポロジのすべてのパブリッシャーおよび Dispatcher に到達するまで続行されます。

緊急パイプライン実行モード emergency-pipeline

重大な状況では、Adobe Managed Services のお客様が、Cloud Manager のテストサイクルが完全に実行されるのを待たずに、ステージング環境および実稼動環境にコード変更をデプロイしなければならない場合があります。

このような状況に対処するために、Cloud Manager の実稼動パイプラインは、緊急モードで実行することができます。このモードを使用すると、セキュリティテストのステップとパフォーマンステストのステップは実行されません。設定済みの承認ステップなどの他のステップはすべて、通常のパイプライン実行モードの場合と同様に実行されます。

NOTE
緊急パイプライン実行モード機能は、カスタマーサクセスエンジニアがプログラム単位で有効にします。

緊急パイプライン実行モードの使用 using-emergency-pipeline

実稼動パイプラインの実行を開始する際に、プログラムに対して緊急パイプライン実行モード機能が有効になっている場合、ダイアログボックスから通常モードまたは緊急モードのいずれかで実行を開始できます。

「パイプライン実行」オプション

緊急モードでの実行について、パイプライン実行の詳細ページを表示すると、画面の上部にあるパンくずリストに、パイプラインが緊急モードで実行中であることを示すインジケーターが表示されます。

緊急モードのパンくずリスト

緊急モードでのパイプライン実行は、Cloud Manager API または CLI を介して実行することもできます。緊急モードで実行を開始するには、クエリパラメーター ?pipelineExecutionMode=EMERGENCY を使用して、パイプラインの実行エンドポイントに PUT リクエストを送信します。また、CLI を使用する場合は、次のようにします。

$ aio cloudmanager:pipeline:create-execution PIPELINE_ID --emergency

実稼動デプロイメントの再実行 reexecute-deployment

まれに、一時的な理由で実稼動デプロイメントステップが失敗すること場合があります。このような場合、実稼動デプロイメントステップの再実行は、完了のタイプ(成功、キャンセル、失敗など)に関係なく、実稼動デプロイメントステップが完了している限りサポートされます。再実行の場合は、3 つのステップで構成される同じパイプラインを使用して新しい実行が作成されます。

  1. 検証ステップ - 通常のパイプライン実行時に行われる検証と基本的に同じです。
  2. ビルドステップ - 再実行のコンテキストでは、ビルドステップは、新しいビルドプロセスを実際に実行するのではなく、アーティファクトをコピーします。
  3. 実稼動デプロイメントステップ - 通常のパイプライン実行における実稼動デプロイメントステップと同じ設定およびオプションを使用します。

再実行が可能な状況では、実稼動パイプラインステータスページには、通常の「ビルドログをダウンロード」オプションの横に「再実行」オプションが表示されます。

パイプラインの概要ウィンドウの「再実行」オプション

NOTE
再実行の場合、ビルドステップには UI でラベルが付けられて、アーティファクトを再ビルドではなくコピーしていることが示されます。

制限事項 limitations

  • 実稼動デプロイメントステップの再実行は、最後の実行に対してのみ使用できます。
  • ロールバック実行やプッシュ更新の実行には、再実行は使用できません。
  • 実稼動デプロイメントステップ以前の任意の時点で最後の実行が失敗した場合、再実行はできません。

再実行 API reexecute-api

UI で使用できるだけでなく、Cloud Manager API を使用して再実行をトリガーしたり、再実行としてトリガーされた実行を識別したりすることもできます。

再実行のトリガー triggering

再実行をトリガーするには、実稼働デプロイメントステップの状態で HAL リンク(http://ns.adobe.com/adobecloud/rel/pipeline/reExecute)に対して PUT リクエストを行う必要があります。

  • このリンクが存在する場合は、そのステップから実行を再開できます。
  • 存在しない場合は、そのステップから実行を再開することはできません。

このリンクは、実稼動デプロイメントステップでのみ使用できます。

 {
  "_links": {
    "http://ns.adobe.com/adobecloud/rel/pipeline/logs": {
      "href": "/api/program/4/pipeline/1/execution/953671/phase/1575676/step/2983530/logs",
      "templated": false
    },
    "http://ns.adobe.com/adobecloud/rel/pipeline/reExecute": {
      "href": "/api/program/4/pipeline/1/execution?stepId=2983530",
      "templated": false
    },
    "http://ns.adobe.com/adobecloud/rel/pipeline/metrics": {
      "href": "/api/program/4/pipeline/1/execution/953671/phase/1575676/step/2983530/metrics",
      "templated": false
    },
    "self": {
      "href": "/api/program/4/pipeline/1/execution/953671/phase/1575676/step/2983530",
      "templated": false
    }
  },
  "id": "6187842",
  "stepId": "2983530",
  "phaseId": "1575676",
  "action": "deploy",
  "environment": "weretail-global-b75-prod",
  "environmentType": "prod",
  "environmentId": "59254",
  "startedAt": "2022-01-20T14:47:41.247+0000",
  "finishedAt": "2022-01-20T15:06:19.885+0000",
  "updatedAt": "2022-01-20T15:06:20.803+0000",
  "details": {
  },
  "status": "FINISHED"

HAL リンクの href 値の構文は例にすぎません。実際の値は生成されるのではなく、常に HAL リンクから読み取られる必要があります。

このエンドポイントに PUT リクエストを送信すると、成功した場合は 201 応答が返され、応答の本文には新しい実行が表現されています。これは、API を使用して通常の実行を開始する場合と似ています。

再実行の識別 identifying

再実行された実行は、trigger フィールドの値 RE_EXECUTE によって識別できます。

recommendation-more-help
c6cdc82b-cee9-48e0-a6ee-48149d5e72c3