コードのデプロイメント code-deployment
コードをデプロイする方法と、デプロイ時に Cloud Manager で何が行われるかを説明します。
Cloud Manager でのコードのデプロイ deploying-code-with-cloud-manager
必要なリポジトリと環境を含め、実稼動パイプラインを設定したら、コードをデプロイする準備が整います。
-
Cloud Manager で「デプロイ」をクリックして、デプロイメントプロセスを開始します。
-
パイプライン実行 画面が表示されます。「ビルド」をクリックしてプロセスを開始します。
ビルドプロセスは、次のステップを含むコードデプロイメントプロセスを開始します。
- ステージデプロイメント
- ステージテスト
- 実稼働デプロイメント
ログを表示したり、テスト条件の結果を確認したりすることで、様々なデプロイメントプロセスから手順を確認できます。
デプロイメントステップ deployment-steps
デプロイメントのステップごとに多数のアクションが実行されます。この節では、これらについて説明します。 コード自体の内部的なデプロイ方法に関する技術的な詳細については、 デプロイメントプロセスの詳細を参照してください。
ステージデプロイメントステップ stage-deployment
ステージデプロイメント ステップには、次のアクションが含まれます。
ステージテスト手順 stage-testing
ステージテスト ステップには、次のアクションが含まれます。
実稼動デプロイメントステップ production-deployment
実稼動デプロイメント ステップには、次のアクションが含まれます。
-
承認の申請
- このオプションは、パイプラインの設定時に有効になっています。
- このオプションを使用すると、実稼動デプロイメントのスケジュールを設定したり、「今すぐ」をクリックして実稼動デプロイメントを即座に実行したりできます。
-
実稼動デプロイメントをスケジュール
-
このオプションは、パイプラインの設定時に有効になっています。
-
スケジュールされた日時は、ユーザーのタイムゾーンで指定されます。
-
-
CSE サポート(有効な場合)
-
実稼働環境にデプロイ
デプロイメントが完了すると、コードはターゲット環境に配置され、ログを確認できます。
タイムアウト timeouts
ユーザーのフィードバックを待ったままにすると、次の手順はタイムアウトします。
デプロイメントプロセスの詳細 deployment-process
Cloud Manager は、ビルドプロセスで生成されたすべての target/*.zip ファイルを保存場所にアップロードします。これらのアーティファクトは、パイプラインのデプロイフェーズで、この場所から取得されます。
Cloud Manager が実稼動以外のトポロジにデプロイされる場合、目的はできるだけ早くデプロイメントを完了することです。そのため、アーティファクトは、以下のようにすべてのノードに同時にデプロイされます。
-
Cloud Managerは、各アーティファクトがAEM パッケージかDispatcher パッケージかを判断します。
-
Cloud Manager は、デプロイメント時に、すべてのディスパッチャーをロードバランサーから削除して環境を分離します。
- 特に設定しない限り、開発およびステージングデプロイメントではロードバランサーの変更をスキップできます。 つまり、開発環境の場合は非実稼動パイプラインのデタッチとアタッチの両方のステップ、ステージング環境の場合は実稼動パイプラインのステップを実行します。
note note NOTE 1-1-1 のお客様がこの機能を使用することが予想されます。 -
各 AEM アーティファクトは、パッケージマネージャー API を介して各 AEM インスタンスにデプロイされ、パッケージの依存関係がデプロイメントの順序を決定します。
- パッケージを使用した新機能のインストール、インスタンス間のコンテンツの転送、リポジトリコンテンツのバックアップ方法について詳しくは、こちらを参照してください。 パッケージマネージャーを参照してください。
note note NOTE すべての AEM アーティファクトは、オーサーとパブリッシャーの両方にデプロイされます。ノード専用の設定が必要な場合は、実行モードを使用する必要があります。実行モードを使用して、特定の目的のためにAEM インスタンスを調整する方法について詳しくは、AEM as a Cloud Serviceへのデプロイドキュメントの実行モードの節を参照してください。 -
Dispatcher アーティファクトは、次のように各Dispatcherにデプロイされます。
- 現在の設定はバックアップされ、一時的な場所にコピーされます。
- すべての設定は、不変ファイルを除いて削除されます。詳しくは、Dispatcher設定を参照してください。 この方法では、孤立したファイルが残らないようにディレクトリがクリアされます。
- アーティファクトは、
httpd
ディレクトリに抽出されます。不変ファイルは上書きされません。Git リポジトリ内の不変ファイルに対して行った変更は、デプロイメント時に無視されます。 これらのファイルは、AMS Dispatcher フレームワークのコアであり、変更できません。 - Apache が設定テストを実行します。エラーが見つからない場合は、サービスが再読み込みされます。エラーが発生した場合、設定がバックアップから復元され、サービスが再読み込みされて、エラーが Cloud Manager にレポートされます。
- パイプライン設定で指定された各パスは、無効化またはDispatcher キャッシュからフラッシュされます。
note note NOTE Cloud Managerでは、Dispatcher アーティファクトに完全なファイルセットが含まれていることが想定されています。 すべてのDispatcher設定ファイルが、Git リポジトリに存在する必要があります。 ファイルまたはフォルダーが見つからない場合、デプロイメントに失敗します。 -
すべてのAEM パッケージとDispatcher パッケージをすべてのノードに正常にデプロイすると、Dispatcher がロードバランサーに戻され、デプロイメントが完了します。
note note NOTE 開発およびステージングデプロイメントでのロードバランサーの変更をスキップできます。 つまり、開発環境の場合は非実稼動パイプラインのデタッチとアタッチの両方のステップを、ステージング環境の場合は実稼動パイプラインを実行できます。
実稼動フェーズへのデプロイメント deployment-production-phase
AEM サイト訪問者への影響を最小限に抑えるために、実稼動トポロジへのデプロイプロセスはわずかに異なります。
実稼動のデプロイメントは、通常、上記と同じ手順に従いますが、周期的な方法で実行します。
- オーサーに AEM パッケージをデプロイします。
- dispatcher1 をロードバランサーから分離します。
- AEM パッケージを publish1 にデプロイし、並行してDispatcher パッケージを dispatcher1 にデプロイして、Dispatcher キャッシュをフラッシュします。
- dispatcher1 をロードバランサーに戻します。
- dispatcher1 がサービスを再開したら、dispatcher2 をロードバランサーから分離します。
- AEM パッケージを publish2 にデプロイし、並行してDispatcher パッケージを dispatcher2 にデプロイして、Dispatcher キャッシュをフラッシュします。
- dispatcher2 をロードバランサーに戻します。
このプロセスは、デプロイメントがトポロジのすべてのパブリッシャーおよび Dispatcher に到達するまで続行されます。
緊急パイプライン実行モード emergency-pipeline
重大な状況では、Managed ServicesのAdobeユーザーが、ステージング環境および実稼動環境に直ちにコード変更をデプロイする必要が生じる場合があります。 この機能を使用すると、Cloud Managerのテストサイクルを完全に回避できます。
このような状況に対処するために、Cloud Manager の実稼動パイプラインは、緊急モードで実行することができます。このモードを使用すると、セキュリティテストのステップとパフォーマンステストのステップは実行されません。設定済みの承認ステップなどの他のステップはすべて、通常のパイプライン実行モードの場合と同様に実行されます。
緊急パイプライン実行モードの使用 using-emergency-pipeline
実稼動パイプラインの実行を開始する際、ダイアログボックスから通常モードと緊急モードのいずれかを選択できます。 このオプションは、プログラムに対して緊急パイプライン実行モード機能が有効になっている場合に使用できます。 この選択は、機能を有効にすると使用できるようになります。
緊急モードでの実行について、パイプライン実行の詳細ページを表示すると、画面の上部にあるパンくずリストに、パイプラインが緊急モードで実行中であることを示すインジケーターが表示されます。
緊急モードでのパイプライン実行は、Cloud Manager API または CLI を介して実行することもできます。緊急モードで実行を開始するには、クエリパラメーター ?pipelineExecutionMode=EMERGENCY
を使用して、パイプラインの実行エンドポイントに PUT
リクエストを送信します。また、CLI を使用する場合は、次のようにします。
$ aio cloudmanager:pipeline:create-execution PIPELINE_ID --emergency
実稼動デプロイメントの再実行 reexecute-deployment
まれに、一時的な理由で実稼動デプロイメントステップが失敗すること場合があります。このような場合、実稼動デプロイメントステップが成功、キャンセル、失敗に関係なく、完了していれば再実行できます。 次の 3 つのステップで構成される同じパイプラインを使用することで、再実行がサポートされます。
- 検証ステップ – 通常のパイプライン実行時に行われる検証と同じ検証。
- ビルドステップ - 再実行のコンテキストでは、ビルドステップは、新しいビルドプロセスを実際に実行するのではなく、アーティファクトをコピーします。
- 実稼動デプロイメントステップ – 通常のパイプライン実行における実稼動デプロイメントステップと同じ設定およびオプションを使用します。
再実行が可能な状況では、実稼動パイプラインステータスページには、通常の「ビルドログをダウンロード」オプションの横に「再実行」オプションが表示されます。
制限事項 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
によって特定されます。