Announcements

Liferay Experience Cloud Self-Managed Stack バージョン 4 では何が変更されましたか?

20/03/27 17:09

ja


この記事では、現在アルファ段階にある Liferay Experience Cloud Self-Managed (SM) Stack v4 の詳細について説明します。 アップグレードを開始する前に、 アップグレード スクリプト 記事を参照してください。

CLI を使用してデプロイする

この新しい構造では、イメージ バージョンはgradle.properties ファイルではなく、各サービスの LCP.json で宣言されます。 通常、1 つのサービスをデプロイする場合は、そのサービスに移動して lcp deployを実行できます。 たとえば、 cd webserver && lcp deploy。 最初に構築する必要があるため、liferay サービスの場合は少し異なります。 次のコマンドを使用して Liferay をデプロイします。

cd liferay
./gradlew clean deploy createDockerfile
cp LCP.json build/docker
cd build/docker
lcp deploy

バックアップサービス

ファイルのオーバーライド

カスタム スクリプト

カスタム .sql スクリプトを backup/configs/{ENV}/scriptsに配置します。 すべての .sql スクリプトがバックアップ サービス コンテナーにコピーされます。 .tgz、<0内の大きな .sql ファイルを圧縮することもできます。 > .gz、または .zip 形式で、 スクリプト 1> ディレクトリ。 複数の .sql ファイルを 1 つの圧縮ファイルに含めることができます。

.sql スクリプトは、バックアップの復元プロセスが終了した後に実行されます。 たとえば、 prd から devに復元する場合、 dev サービスが実際の復元を担当します。 したがって、 dev 環境で特定のテーブルを切り捨てたい場合は、それらを backup/configs/dev/scriptsに追加すると、それらは に復元するときにのみ実行されます。開発 環境。

CIサービス

デフォルトの Jenkinsfile 拡張ポイント

Git リポジトリの構造をアップグレードするスクリプトは、ルートの Jenkinsfile ci/#Jenkinsfileにコピーし、コメントアウトします。 Jenkins 4.0.0 イメージにはデフォルトのパイプラインが含まれるようになったため、コメント アウトされています。そのため、リポジトリのルートで Jenkinsfile は必要なくなりました。

さらに、4 つの新しいファイルが ci フォルダーに追加されます。

  • ci/#Jenkinsfile-before-project-build
  • ci/#Jenkinsfile-before-cloud-build
  • ci/#Jenkinsfile-before-cloud-deploy
  • ci/#Jenkinsfile-post-always

これらは最初はコメントアウトされていますが、さまざまな拡張ポイントを示すために含まれています。 それらがデフォルトのパイプラインでどのように使用されているかを確認するには、Jenkins サービスの起動ログを監視するだけです。 完全なデフォルトのJenkinsfileが起動ログに出力されます。 さらに、Jenkins がデフォルトの Jenkinsfile を使用するように構成されているか、git リポジトリでカスタム Jenkinsfile を使用するように構成されているかどうかが、ログに出力されます。

ci ビルド プロセスの手順の基本的な概要を次に示します。

  1. ci/Jenkinsfile-before-project-buildをロードします (存在する場合)。
  2. プロジェクト内のすべてのサービスをビルドします。
  3. ci/Jenkinsfile-before-cloud-buildをロードします (存在する場合)。
  4. コンソールに表示されるDXP Cloudビルドを作成します。
  5. ci/Jenkinsfile-before-cloud-deployをロードします (存在する場合)。
  6. オプションで、現在のブランチが展開ブランチとして指定されているかどうかに応じて、クラウド内の環境にビルドを展開します。 これは、 DEPLOY_BRANCH 環境変数によって構成されます。 DEPLOY_TARGET 環境変数は、デプロイ先の環境を指定します。
  7. ci/Jenkinsfile-post-alwaysをロードします (存在する場合)。 これは、ビルドが失敗した場合と成功した場合の両方で実行されます。

これらの拡張ポイント間でコードを共有する方法が必要になるでしょう。 基本的な方法の1つは、groovyスクリプトをロードすることです。 たとえば、次の内容の ci/util.groovy という名前の groovy ファイルを作成できます。

def sendSlackMessage(message) {
	println(message)
}

return this

次に、以下を ci/Jenkinsfile-before-cloud-buildに挿入できます。

def util = load("ci/util.groovy")

util.sendSlackMessage("About to create DXP Cloud build...")

デフォルトの Jenkinsfile 環境変数

次の環境変数は、デフォルトのJenkinsファイルでのみ使用されます。 それらは、デフォルト値とともにリストされています。 これらの環境変数は Liferay に固有のものですが、Jenkins パイプライン オプションに直接対応しています。 それらが何をするかを確認するには、パイプライン オプションに関する Jenkins のドキュメントを参照してください

JENKINS_BUILD_TIMEOUT_MINUTES
JENKINS_PRESERVE_STASHES_BUILD_COUNT
JENKINS_BUILD_NUM_TO_KEEP
JENKINS_BUILD_DAYS_TO_KEEP
JENKINS_ARTIFACT_NUM_TO_KEEP
JENKINS_ARTIFACT_DAYS_TO_KEEP

Git リポジトリで Jenkinsfile を使用する

デフォルトの Jenkinsfile とその拡張ポイントを使用してもニーズが満たされない場合は、まず機能リクエストを作成してください。 それ以外の場合は、 JENKINS_USE_DEFAULT_JENKINSFILE 環境変数を falseに設定することで、デフォルトの Jenkinsfile の使用をオプトアウトできます。 デフォルトでは、この環境変数は trueに設定されています。 カスタム Jenkinsfile を読み取るには、 ci フォルダーに作成する必要があります。 そうしないと、カスタム パイプラインを使用するようにサービスを構成したが、サービスがそれを見つけることができなかったため、起動時にエラーが発生します。

カスタム Jenkinsfile を作成するときは、デフォルトの Jenkinsfile をガイドラインとして使用できます。 4.0.0 Liferay Jenkins イメージでは、API を提供する Jenkins プラグインにさまざまな段階がカプセル化されており、デフォルトの Jenkinsfile が大幅に削減されていることがわかります。

Liferayサービス

ファイルのオーバーライド

Liferay Workspace

4.x Liferay Experience Cloud SM イメージは、ベース イメージとして Liferay DXP イメージ を使用します。 ソースコードは hereにあります。

Liferay Experience Cloud SM 4.x イメージでは、元のフォルダー構造は考慮されなくなりました。

  • lcp/liferay/config/{ENV}
  • lcp/liferay/deploy/{ENV}
  • lcp/liferay/script/{ENV}
  • lcp/liferay/hotfix/{ENV}
  • lcp/liferay/license/{ENV}

代わりに、Liferay Experience Cloud SM 4.x イメージでは、 liferay フォルダーが Liferay ワークスペースです。 Liferay ワークスペースを使用してローカルで Liferay を開発する方法については、 Liferay ワークスペースのドキュメント を参照してください。

すべての設定は、 LIFERAY_HOME オーバーライドとして機能する liferay/configs/{ENV}に配置する必要があります。 Liferay サービスの場合、オーバーライド プロセスには 3 つのステップがあります。 3 つのステップで何が起こるかについての詳細は、起動ログを参照してください。

ステップ1は、イメージがデフォルトをコピーすることです。これは、 liferay/configs/{ENV} でもオーバーライドできます。 ログでこれを探します。

##
## DXPCloud Liferay Defaults
##

ステップ 2 は、 liferay/configs/{ENV} LIFERAY_HOMEの内容をオーバーライドすることです。

ステップ 3 は、イメージが特定のファイルと構成の存在を強制することです。 この手順は、手順 2 でコピーしたファイルを上書きします。 ログでこれを探します。

##
## DXPCloud Liferay Overrides
##

カスタム スクリプト

カスタム .sh スクリプトを liferay/configs/{ENV}/scriptsに配置します。

ホットフィックス

ホットフィックスとパッチ ツールは liferay/configs/{ENV}/patchingに配置する必要があります。

大きなホットフィックス ファイルを git リポジトリに直接コミットする代わりに、CI サービスがビルド プロセス中にホットフィックスをプルしてくれることに頼ることができます。このアプローチは、 liferay/build/docker フォルダーから lcp deploy を呼び出しても機能しません。 これを利用するために、実際に環境変数を CI サービスに追加できます。 環境変数の名前は JENKINS_LIFERAY_DXP_HOTFIXES_{ENV}である必要があります。 値は、適用するホットフィックスのカンマ区切りのリストである必要があります。 たとえば、 ci/LCP.jsonに次のものを含めることができます。 ホットフィックス名から .zip 拡張子を削除します。

"env": {
   "JENKINS_LIFERAY_DXP_HOTFIXES_COMMON": "liferay-hotfix-10-7210,liferay-hotfix-17-7210"
   "JENKINS_LIFERAY_DXP_HOTFIXES_DEV": "liferay-hotfix-15-7210,liferay-hotfix-33-7210",
},

検索サービス

ファイルのオーバーライド

検索サービスのすべてのカスタマイズは、git リポジトリの search/configs フォルダーに配置する必要があります。 このフォルダーに の構成の新しい 追加します。たとえば prd dev です ごとsearch/configs/common 、Liferay Experience Cloud SM で実行されているコンテナーの /usr/share/elasticsearch フォルダーにコピーされます。 このコピー プロセスは、ファイルとフォルダーを上書きします。 search/configs/commonからの最初のコピーの後、環境固有のカスタマイズがコピーされます。 たとえば、検索サービスが prd 環境にデプロイされていて、ファイルが search/configs/prdに存在する場合、それらは上書きされ、 からコピーされたファイルが上書きされる可能性があります。検索/構成/共通.

.tgz、<0内の大きな .sql ファイルを圧縮することもできます。 > .gz、または <1>.zip1> 0>形式で、<0>0> <1>スクリプト 1> <0>0>ディレクトリ。 したがって、カスタム elasticsearch.yml in / configs / common / config 1を作成する場合 >、これは /usr/share/elasticsearch/config/elasticsearch.yml にコピーされ、デフォルトの elasticsearch.ymlを上書きします LiferayElasticsearchサービスが提供するファイル。

カスタム スクリプト

カスタム シェル スクリプトを search/configs/{ENV}/scriptsに配置します。 それらは /usr/share/elasticsearch/scriptsにコピーされます。 .sh /usr/share/elasticsearch/scripts のスクリプト が実行されます。

エラスティックサーチ ライセンス

Elasticsearch .json ライセンスは search/configs/{ENV}/licenseに入れることができ、展開プロセスの一部として適用されます。

ファイルオーバーライドの概要

把握すべき主な概念は、 search/configs/{ENV} 内の すべての ファイルが /usr/share/elasticsearchにコピーされることですが、特定のフォルダーのみが追加処理の対象となります。サービス展開中のLiferay Cloudによる。 検索サービスの場合、Liferay コードによって具体的に処理される唯一のフォルダーは、 ライセンス および スクリプト フォルダーです。

Elasticsearchプラグイン

インストールされているプラグインを確認するには、検索サービスにシェルインし、 bin/elasticsearch-plugin listを実行します。

イメージがデフォルトでインストールするもの以外に追加の Elasticsearch プラグインをインストールする場合は、 LCP_SERVICE_SEARCH_ES_PLUGINS 環境変数を、インストールするプラグイン名のコンマ区切りリストに設定できます。 これらは、サービスのデプロイ中にインストールされます。

ウェブサーバー サービス

ファイルのオーバーライド

Web サーバー サービスのすべてのカスタマイズは、git リポジトリの webserver/configs フォルダーに配置する必要があります。 このフォルダーに の構成の新しい 追加します。たとえば prd dev です ごとwebserver/configs/common 、Liferay Experience Cloud SM で実行されているコンテナーの /etc/nginx フォルダーにコピーされます。 このコピー プロセスは、ファイルとフォルダーを上書きします。 webserver/configs/commonからの最初のコピーの後、環境固有のカスタマイズがコピーされます。 たとえば、webserver サービスが prd 環境にデプロイされていて、ファイルが webserver/configs/prdに存在する場合、それらは上書きされ、 からコピーされたファイルが上書きされる可能性があります。 webserver/configs/common.

ファイル webserver/configs/{ENV}/conf.d/liferay.confを追加して、ルートの場所をカスタマイズできます。 ファイルに必ず liferay.confという名前を付けてください。別のファイル名でルートの場所を追加すると、NGINX が 2 つのルートの場所 (Liferay Cloud が提供するデフォルトの場所とカスタムの場所) を見つけると、エラーがスローされます。 webserver サービスにシェルし、 /etc/nginx/conf.d/liferay.conf に移動して、デフォルトの liferay.conf ファイルがどのように見えるかを確認します。

その他の *.conf ファイルを webserver/configs/{ENV}/conf.d/ に追加して、追加の場所を指定できます。

NGINX 構成を完全にオーバーライドするには、ファイル webserver/configs/{ENV}/nginx.confを追加します。 この時点で、NGINX の構成をゼロから作成しているため、 webserver/configs/{ENV}/conf.d/liferay.conf を追加してルートの場所をカスタマイズし、 で追加の場所を指定することに関する以前の手順webserver/configs/{ENV}/conf.d/ 適用されません。 Web サーバー サービスにシェルでアクセスし、 /etc/nginx/nginx.conf に移動して、デフォルトの nginx.conf ファイルがどのように見えるかを確認します。

パブリック ディレクトリ

カスタム静的コンテンツを追加する場合は、これらのファイルを webserver/configs/{ENV}/publicに配置します。 Liferay Cloud は、この public フォルダーを探し、その中のすべてのファイルを /var/www/htmlにコピーします。 これらのリソースを構成するには、場所を追加する必要があります。 たとえば、html ファイル index.html から webserver/configs/{ENV}/public/static を追加してから、 static_location.conf などの構成ファイルを追加します。 webserver/configs/{ENV}/conf.d 以下の内容:

location /static/ {
  root /var/www/html;
}

より複雑な使用例については、NGINX のドキュメントを参照してください。

カスタム スクリプト

カスタム シェル スクリプトを webserver/configs/{ENV}/scriptsに配置します。 それらは /etc/nginx/scriptsにコピーされます。 .sh /etc/nginx/scripts のスクリプト が実行されます。

ファイルオーバーライドの概要

把握すべき主な概念は、webserver/configs/{ENV} 内の すべての ファイルが /etc/nginxにコピーされることですが、Liferay Cloud による追加処理の対象となるのは特定のフォルダーのみです。サービス展開。 Web サーバー サービスの場合、Liferay コードによって具体的に処理される唯一のフォルダーは、 public および scripts フォルダーです。