Sitecore CLIを使用する パート2 動作確認

samatsu 11/9/2020 1041 N/A Sitecore CLI

パート1で、ローカルのプロジェクトフォルダーにSitecore CLIをインストールしたので、簡単な設定ファイルを作成して動作を確認してみます。

引き続き、 C:\projects\sample フォルダーがプロジェクトフォルダーという前提で説明を記載します。

1. 初期セットアップ

まずは、ファイル一式を準備してくれる便利なコマンドがあるので、Sitecore CLI用に必要なファイルを次のコマンドで準備します。下記コマンドは、Sitecore開発用のプロジェクトフォルダー(今回の例では C:\projects\sample ) で引き続き実行してください。

dotnet sitecore init

フォルダーにいくつかのファイルやフォルダーを生成してくれます。initコマンドを使用せずに、sitecore.json だけ用意することもできますが、initコマンドを使用して初期セットアップを行うと、VS Codeでシリアライズ用の jsonファイルを編集する際、コード補完が機能するようになるので便利です。

2. ログイン

次に、ログインしてログイントークンをローカルファイルに保存する必要があります。次のコマンドを実行します。CMサーバーと認証サーバーの名前は実際の環境に合わせて適宜変更してください。図の例では、編集サーバーが https://xp100.dev.local/ 、認証サーバーが https://xp100identityserver.dev.local/  という環境で実行した結果になります。

sitecore login --authority https://<identity authority> --cm https://<Sitecore instance> --allow-write true

コマンドを実行すると、ログインするためにブラウザーが起動します。図のように選択画面が表示されたらブラウザーを選択してOKをクリックします。

ログイン画面が表示されたら admin ユーザーでログインします。

ログインに成功したら、はい、許可します。を選択します。

下図が表示されたらブラウザーを閉じます。

資格情報の保存に成功すると、下図のメッセージが表示されます。

保存されたトークンの情報は、 .sitecoreフォルダーの user.json に保存されます。

次のコマンドを使用して、ブラウザーを起動せずに(非インタラクティブ)にログインすることもできます。

dotnet sitecore login --authority https://<identity authority> --cm http://<sitecore instance> --allow-write true --client-credentials true --client-id <client id> --client-secret <client secret>

ブラウザーを使用しない非インタラクティブなログインの設定に関しては次のページを参照して下さい。手順に従うことで、非インタラクティブなログインを構成することができます。この設定は、CIやCD環境を実装するために必要な設定になります。
https://doc.sitecore.com/developers/100/developer-tools/en/configure-a-non-interactive-client-login.html

3. 動作確認

認証トークンの準備もできました。あとは、簡単な構成ファイルを作成して動作確認してみようと思います。

前提として、Sitecore上に /sitecore/templates/Project/MySample というアイテム配下が開発者が管理しているアイテムとします。このツリーはいかにあるアイテムをシリアライズしたり、デシリアライズしてみます。

プロジェクトフォルダー直下に存在している sitecore.json ファイルを開きます。このファイルのmodulesセクションの内容を

  "modules": [
    "./TODO/*.module.json"
  ],

次のように変更します。

  "modules": [
    "./Project.module.json"
  ],

今回は、ファイルを1つ明示的に指定していますが ./src/*/*.module.json のようにワイルドカードを使用してモジュール用のファイルを指定できます。今回はProject.module.json というファイルのみを使用します。

次に、Project.module.json をsitecore.jsonと同じ階層に作成して次のように編集して保存します。

{
    "namespace": "Project.MySample",
    "items": {
        "includes": [
          {
            "name": "templates",
            "path": "/sitecore/templates/Project/MySample"
          }
        ]
    }
}

内容はほぼ自明ですが、/sitecore/templates/Project/MySample およびその配下のアイテムをシリアライズする設定です。

後はPowerShellで次のコマンドを実行します。

dotnet sitecore ser pull

これで、serialization フォルダー配下に、nameプロパティで指定した名前と同じフォルダ  templates が作成され、yml形式でシリアル化されたアイテムが保存されます。

pathで指定したアイテムに対してルールを指定することで、シリアル化対象に含める(または除外する)アイテムを細かく指定することもできます。

以下がProject.module.jsonを少し変更した例です。

{
    "namespace": "Project.MySample",
    "items": {
        "includes": [
          {
            "name": "templates",
            "path": "/sitecore/templates/Project/MySample",
            "rules": [
                {
                    "path": "/Generic Page",
                    "scope" : "itemAndDescendants",
                    "allowedPushOperations" : "createOnly"
                },
                {
                    "path": "*",
                    "scope": "itemAndDescendants"
                }
            ]
          }
        ]
    }
}

設定できるプロパティの説明は、以下のページを参照してください。上記例や下記ページを参照することで、できる内容がつかめると思います。

Sitecore Content Serialization structural overview
https://doc.sitecore.com/developers/100/developer-tools/en/sitecore-content-serialization-structural-overview.html

Sitecore Content Serialization configuration reference
https://doc.sitecore.com/developers/100/developer-tools/en/sitecore-content-serialization-configuration-reference.html

ローカルのymlファイルを基にアイテムを作成したい場合は、次のコマンドを実行します。

dotnet sitecore ser push

また、CI(継続的インテグレーション)やCD(継続的デプロイ)を実装する場合は、Sitecore CLI用のパッケージを作成し、そのパッケージをインストールすることもできます。

パッケージを作る場合は、例えば次のコマンドを実行して test.itempackage というzipファイルを作成できます。

dotnet sitecore ser pkg create -o  test

itempackageをインストーする場合は、次のコマンドを実行します。

dotnet sitecore ser pkg install -f <name of package>.itempackage --client-id <your client id> --client-secret <your client secret> --cm <your content management host> --auth <your identity host>

詳細は次のページを参照ください。

Create and install a Sitecore Content Serialization package
https://doc.sitecore.com/developers/100/developer-tools/en/create-and-install-a-sitecore-content-serialization-package.html

その他、 sitecore cliには、アイテムが変更されたら自動的に対象アイテムをシリアライズするコマンドなども用意されています。コマンドの一覧については、次のページで確認できます。

Sitecore Command Line Interface reference
https://doc.sitecore.com/developers/100/developer-tools/en/sitecore-command-line-interface-reference.html

説明は以上となります。

Sitecore CLIを使用することで、プログラムと開発用のアイテム(テンプレートやレンダリングアイテム等)をより簡単にソースコード管理システムで管理、およびSitecore環境に展開できるようになります。