コードのデプロイメント 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 Dispatcher フレームワークのコアであり、変更できません。
    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

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

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