コードのデプロイメント

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

Cloud Manager でのコードのデプロイ

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

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

    「デプロイ」ボタン

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

    「作成」ボタン

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

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

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

デプロイメントステップ

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

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

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

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

ステージデプロイメント

ステージテスト手順

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

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

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

    ステージテスト

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

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

  • 承認の申請
    • このオプションは、パイプラインの設定時に有効になっています。
    • このオプションを使用すると、実稼動デプロイメントのスケジュールを設定したり、「今すぐ」をクリックして実稼動デプロイメントを即座に実行したりできます。
  • 実稼動デプロイメントをスケジュール
    • このオプションは、パイプラインの設定時に有効になっています。
    • スケジュールされた日時は、ユーザーのタイムゾーンで指定されます。
      デプロイメントのスケジュール設定
  • CSE サポート(有効な場合)
  • 実稼働環境にデプロイ

実稼働デプロイメント

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

デプロイメント完了

タイムアウト

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

ステップ タイムアウト
コード品質テスト 14 日
セキュリティテスト 14 日
パフォーマンステスト 14 日
アプリケーションの承認 14 日
実稼動デプロイメントをスケジュール 14 日
CSE サポート 14 日

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

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

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

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

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

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

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

    メモ

    この機能は、主に 1-1-1 のお客様が使用すると想定されています。

  3. 各 AEM アーティファクトは、パッケージマネージャー API を介して各 AEM インスタンスにデプロイされ、パッケージの依存関係がデプロイメントの順序を決定します。

    • 新機能のインストール、インスタンス間のコンテンツの転送、リポジトリコンテンツのバックアップにパッケージを使用する方法について詳しくは、パッケージマネージャーのドキュメントを参照してください。
    メモ

    すべての AEM アーティファクトは、オーサーとパブリッシャーの両方にデプロイされます。ノード専用の設定が必要な場合は、実行モードを使用する必要があります。実行モードを使用して、特定の目的のために AEM インスタンスを調整する方法について詳しくは、ドキュメント「AEM as a Cloud Service へのデプロイ」の実行モードの節を参照してください。

  4. Dispatcher のアーティファクトは、以下のように各 Dispatcher にデプロイされます。

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

    Cloud Manager では、Dispatcher アーティファクトに完全なファイルセットが含まれていることが想定されています。すべての Dispatcher 設定ファイルが、Git リポジトリーに存在する必要があります。ファイルやフォルダーが見つからない場合、デプロイメントに失敗します。

  5. すべての AEM および Dispatcher パッケージのすべてのノードへのデプロイメントが正常に完了すると、Dispatcher がロードバランサーに再追加され、デプロイメントが完了します。

    メモ

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

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

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 に到達するまで続行されます。

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

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

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

メモ

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

緊急パイプライン実行モードの使用

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

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

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

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

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

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

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

実稼動デプロイメント手順の再実行は、実稼動デプロイ手順が完了した実行に対して利用できます。完了のタイプは重要ではありません。デプロイメントは、成功(AMS プログラムの場合のみ)、キャンセル、失敗のいずれかになります。最も多いユースケースは、一時的な理由で実稼動のデプロイメント手順が失敗した場合です。再実行の場合は、同じパイプラインを使用して新しい実行が作成されます。 この新しい実行は、次の 3 つのステップで構成されます。

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

ビルドステップのラベルが UI で異なる場合がありますが、これは、アーティファクトを再ビルドではなくコピーしていることを表しています。

再実行

制限事項

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

再実行の識別

実行が再実行であるかどうかを識別するために、trigger フィールドを調べることができます。その値は RE_EXECUTE になります。

再実行のトリガー

再実行をトリガーするには、実稼働デプロイメントステップの状態で 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 を使用して通常の実行を開始する場合と似ています。

このページ