CI/CD連携.
DXPR BuilderのコンテンツはDrupalのテキストフィールドと設定エンティティに保存されます。このページでは、CI/CDパイプラインとデプロイワークフローにDXPR Builderコンテンツを含める方法を説明します。
コンテンツの保存場所
DXPR Builderはデータをデータベースと設定に保存します。
| データ種別 | 保存場所 | デプロイ方法 |
|---|---|---|
| ページコンテンツ | テキストフィールド値(データベース) | コンテンツ同期または移行 |
| ページテンプレート | 設定エンティティ | 設定のエクスポート/インポート |
| ユーザーテンプレート | 設定エンティティ | 設定のエクスポート/インポート |
| 設定 | 設定。プロダクトキーの保持場所はConfiguration storage | キーがKeyエンティティに格納されれば設定のエクスポート/インポート。下記参照 |
| ユーザープロファイル | 設定エンティティ | 設定のエクスポート/インポート |
| プロダクトキー | 設定、またはキーを保持・参照するKeyエンティティ | 環境ごと。下記参照 |
設定管理
DXPR Builderの設定とテンプレートはDrupal設定です。標準のDrupal設定管理でデプロイします。
エクスポート
drush config:export
これにより、次のDXPR Builder設定ファイルがエクスポートされます。
dxpr_builder.settings.ymldxpr_builder.dxpr_builder_profile.*.ymldxpr_builder.page_template.*.ymldxpr_builder.user_template.*.ymlkey.key.dxpr_builder_jwt.yml、またはプロダクトキー用に選択したKeyエンティティ
プロダクトキーが含まれている間はdxpr_builder.settings.ymlをコミットしません。詳しくは下のプロダクトキーをご覧ください。
インポート
drush config:import
CIパイプラインの例
drush deployはデータベースアップデートの実行、設定のインポート、キャッシュの再構築を正しい順序で行います。DXPR Builderのリリースではデータベースアップデートでコンテンツを変換するため、デプロイごとに実行します。
deploy:
script:
- drush deploy -y
コンテンツのデプロイ
ページコンテンツ(テキストフィールド内のHTML)は設定ではなく データベースコンテンツです。環境間でコンテンツをデプロイする方法は次のとおりです。
Default Contentモジュール
コンテンツをYAMLファイルとしてエクスポートし、ターゲット環境にインポートします。
Content Synchronization
コンテンツエンティティのエクスポート・インポートにはContent Synchronizationモジュール(content_sync)を使います。
データベースの同期
データベースをある環境から別の環境にコピーします。
drush sql:sync @source @target
環境固有の考慮事項
ファイルパス
DXPR Builderコンテンツはアップロード画像をファイルパスで参照します。ファイルディレクトリを環境間で同期します。
プロダクトキー
各環境には有効なプロダクトキーが必要です。デフォルトのConfiguration storageでは、dxpr_builder.settings.ymlにそのキーが平文で保持されています。設定値はjson_web_tokenです。ファイルをリポジトリに入れる前に次の手順を行います。
- 環境変数またはファイルを読み取るプロバイダーのキーをConfiguration > System > Keys
(
/admin/config/system/keys)で作成します。 - 場所はDXPR Studio > DXPR Builder > General Settings
(
/admin/dxpr_studio/dxpr_builder/settings)です。Storage methodをKey moduleに設定し、Keyでそのキーを選んでSave settingsをクリックします。これによりjson_web_tokenがクリアされます。 - 設定を再度エクスポートし、
dxpr_builder.settings.ymlにキーが含まれていないことを確認します。
プロバイダーがConfigurationのキーでは、値が独自のエクスポートファイルに保存されるため、コミットは安全ではありません。
次のステップ
環境間のコンテンツステージングでDXPR Builderの理解をさらに深めましょう。