これまで何度か Sitecore CLI に関して紹介をしてきましたが、今回は最新版の Sitecore CLI 5.2 がリリースされているため、これを利用してエクスポート、インポートを実践する手順を紹介します。
Sitecore CLI について
Sitecore CMS 向けのコマンドラインインターフェイスとして Sitecore CLI を提供しており、このブログ記事を書いている時の最新バージョンは 5.2.113 となっています。
コマンドラインを利用することで、以下のようなことができます。
- コンテンツをエクスポートすることができます
- コンテンツのインポートをすることができます
- パブリッシュ、インデックスに関して実行することができます
- 複数の環境に繋げて、切り替えて利用することができます
- 様々な環境で動作します
- Windows / macOS / Linux など .NET 6.0 が対応している OS となります
対象となる Sitecore のバージョンは以下の通りです。
- Sitecore 10.1 / 10.2 / 10.3 ( Management Service のインストールが必要)
- Sitecore XM Cloud
インストールに関しては以下のページを参照してください。
また XM Cloud のプロジェクトであれば、up.ps1 を実行すると自動的にインストールが完了します。
バージョンアップ
手元で動作している Sitecore CLI のバージョンを確認する場合、以下のコマンドを実行すると表示されます。
PS C:\projects\xmc-demo-jp> dotnet sitecore --version
5.1.25+a9db85602a7cc6fcfb894d231337ed88887c6d5a
PS C:\projects\xmc-demo-jp>
今回は 5.1.25 がインストールされています。最新版にバージョンアップするためには、まず .config/dotnet-tools.json のファイルに含まれている tools の内容を消してください。その後、以下のコマンドを実行すると、インストールが完了します。
dotnet tool install Sitecore.CLI --version 5.2.113
古いバージョンのデータを削除するために、.sitecore フォルダおよび sitecore.json のファイルを削除して、初期化します。
dotnet sitecore init
続いて XM Cloud のプラグインを利用するために、以下のプラグインをインストールします。
dotnet sitecore plugin add -n Sitecore.DevEx.Extensibility.XMCloud
実際にインストールができているか、以下のコマンドで確認をします。
dotnet sitecore plugin list
最後に作成された sitecore.json のファイルに対して、インポートをするファイルに関する設定を追加します。
"modules": ["src/*.module.json"],
また、serialization で設定されている項目を items に変更してください。
"defaultModuleRelativeSerializationPath": "items",
コマンドラインのバージョンアップはこれで完了となります。
XM Cloud にログインする
コマンドラインを利用して、まずは XM Cloud にアクセスをアクセスします。
dotnet sitecore cloud login --allow-write
以前であれば接続する先の environment id を取得するためにプロジェクト一覧の取得、環境一覧を取得して、その中から利用する ID を確認をする必要がありましたが、XM Cloud の新しい管理画面を利用すると簡単に確認することができます。
この画面から取得した ID を利用して、コマンドラインで接続してください。
dotnet sitecore cloud environment connect --environment-id yourid
実行すると簡単に接続することができました。
XM Cloud のコンテンツをエクスポートする
ここから先は、以前の記事と同じ手順を進めていきます。
今回はサイトの名前を sitecoredemo-jp にしているため、この部分の要素が変わります。以下、3つのファイルを追加してください。
src\InitItems.module.json
{
"namespace": "InitItems",
"items": {
"includes": [
{
"name": "content-root",
"path": "/sitecore/content",
"scope": "singleItem",
"allowedPushOperations": "createAndUpdate"
}
]
}
}
src\SitecoreDemo-Content.module.json
{
"namespace": "SitecoreDemo-Content",
"references": ["SitecoreDemo"],
"items": {
"includes": [
{
"name": "content",
"path": "/sitecore/content/sitecoredemo-jp"
},
{
"name": "media",
"path": "/sitecore/media library/Project/sitecoredemo-jp"
}
]
}
}
src\SitecoreDemo.module.json
{
"namespace": "SitecoreDemo",
"references": ["InitItems"],
"items": {
"includes": [
{
"name": "placeholders",
"path": "/sitecore/layout/Placeholder Settings/Project/sitecoredemo-jp"
},
{
"name": "renderings",
"path": "/sitecore/layout/Renderings/Project/sitecoredemo-jp"
},
{
"name": "templates",
"path": "/sitecore/templates/Project/sitecoredemo-jp"
},
{
"name": "languages",
"path": "/sitecore/system/Languages"
}
]
}
}
標準で提供されている renderinghost.module.json のファイルを利用すると、XM Cloud での Rendering Host の設定をダウンロードすることになります。この部分は Docker とは環境が異なり、ローカルでの Experience Editor が動かない要因となります。エクスポートの対象外とするためにファイル名を renderinghost.module.bak としておきます。
誤ってそのままインポートした場合は、ローカルでは以下の設定にしてください。対象となるアイテムは /sitecore/system/Settings/Services/Rendering Hosts/Default です。
設定 | 値 |
---|---|
Server side rendering engine endpoint URL | http://rendering:3000/api/editing/render |
Server side rendering engine application URL | http://rendering:3000 |
続いて .sitecore\user.json のファイルで定義されている development の設定にある allowWrite の値を false から true に変更してください。これでエクスポートの準備が完了しました。
dotnet sitecore ser pull -n development
これを実行すると、エクスポートが完了します。
ローカルの環境にインポートする
エクスポートしたデータをローカルの環境にインポートをして、クラウドの環境を手元に再現します。
.sitecore\user.json のファイルに以下の定義がなければ、追加してください。標準でログインをする先としてローカルの Sitecore のインスタンスを指定していれば利用できます。
"default": {
"ref": "xmcloud",
"allowWrite": true,
"host": "https://xmcloudcm.localhost",
"variables": {}
}
準備ができたところで、ローカルの Sitecore の環境にログインをします。
dotnet sitecore login --allow-write true
ブラウザが起動してログインをすると、ローカルの Sitecore にデータをインポートしていきます。
dotnet sitecore ser push
データがインポートできると、以下のようにコンテンツエディターを開くとサイトの情報が含まれていることがわかります。
これで設定は完了となりエクスペリエンスエディターを起動します。エラーになった場合は、以下の手順を間に挟むことで正しく動作します。
- /sitecore/system/Settings/Services/Rendering Hosts の下に新しい Rendering Host を追加します( Docker )
- サイトの設定を保持しているアイテム、今回であれば /sitecore/content/sitecoredemo-jp/sitecoredemo-jp/Settings/Site Grouping/sitecoredemo-jp の Settings の Predefined application rendering host の値を一時的に新しく作成したアイテムにして保存をします
- 一度保存をした後、Default に戻して保存をします
まとめ
今回はコマンドラインの環境を最新版にアップグレード、また XM Cloud の環境に繋げたあとエクスポート、手元の環境にインポートという形で、コンテンツのやり取りをする手順を改めて紹介をしました。