Sitecore CLI を利用してクラウドとローカルの環境を揃える( 5.2 版 )

公開日 :

これまで何度か 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

random desc

古いバージョンのデータを削除するために、.sitecore フォルダおよび sitecore.json のファイルを削除して、初期化します。

dotnet sitecore init

続いて XM Cloud のプラグインを利用するために、以下のプラグインをインストールします。

dotnet sitecore plugin add -n Sitecore.DevEx.Extensibility.XMCloud

実際にインストールができているか、以下のコマンドで確認をします。

dotnet sitecore plugin list

random desc

最後に作成された 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 の新しい管理画面を利用すると簡単に確認することができます。

random desc

この画面から取得した ID を利用して、コマンドラインで接続してください。

dotnet sitecore cloud environment connect --environment-id yourid

実行すると簡単に接続することができました。

random desc

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

これを実行すると、エクスポートが完了します。

random desc

ローカルの環境にインポートする

エクスポートしたデータをローカルの環境にインポートをして、クラウドの環境を手元に再現します。

.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

random desc

データがインポートできると、以下のようにコンテンツエディターを開くとサイトの情報が含まれていることがわかります。

random desc

これで設定は完了となりエクスペリエンスエディターを起動します。エラーになった場合は、以下の手順を間に挟むことで正しく動作します。

  • /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 に戻して保存をします

random desc

まとめ

今回はコマンドラインの環境を最新版にアップグレード、また XM Cloud の環境に繋げたあとエクスポート、手元の環境にインポートという形で、コンテンツのやり取りをする手順を改めて紹介をしました。