web-dev-qa-db-ja.com

dev-> stage-> productionから(CMI)構成を移行するための推奨ワークフローは何ですか?

数か月前にdrupalcampがあり、誰かが新しい構成(CMI)システムを使用したデプロイメントの管理について質問しました。考えられる理想的なワークフローの1つは、構成をバージョン管理に維持し、チームメンバー間で構成を移行できるようにすることです。

部屋で私たちが理解できた最高のもの(部分的にDrupalConポートランドでのプレゼンテーションに基づく)は次のとおりです。

  • アクティブな構成ディレクトリを無視するようバージョン管理に指示します。
  • すべての構成をステージングディレクトリにコピーし、バージョン管理にコミットします。

また、settings.phpを使用して、2つの環境間でactive/stagingディレクトリを逆にします。ただし、1つのサーバーから次のサーバーへの展開ワークフローを理解することは複雑でしたが実行可能でしたが、複数のローカル環境(つまり、複数の開発者)から開発者(または相互)への推奨ワークフローは次のとおりです-考えられる問題はすべてのチームメンバーです。同じまたは類似の環境を共有しているので、1人のチームメイトのマシンの変更はどのように行われるのでしょうか。

41
btmash

CMIのメンテナと少し話し合った後、最善の方法についての議論はまだ終わっていませんが、現時点で最も意味のあることは次のとおりです。

今のところ簡潔にしておくと、質問に基づいて、または参照されている問題が公式の回答で解決されたときに展開しようとします。

つまり、まず、事実...

  • すでに述べたように、アクティブなステージングディレクトリがあります。 ActiveはDrupalによって完全に管理されており、そこで直接(別の場所に切り替えることによって直接または間接的に)変更することはサポートされていません。
  • ステージングは​​、Drupalがインポートする構成を探し、それ以外の場合は気にしない場所です。
  • インポートプロセスは重要です。構成の変更はサイトに特定の方法で影響を与える可能性があり、有効性を確認する必要があります。たとえば、テキストフィールドのフィールドタイプをエンティティ参照に変更することはできません。たとえば、それだけでは機能しません。
  • 構成インポートは常にall構成で実行する必要があります。単一のビューまたはノードタイプをインポートすることはできません。試してみましたが、依存関係や削除/名前変更などに対処しようとすると、システムが非常に複雑になり、機能しませんでした。
  • デフォルト構成を再インストールする唯一の方法は、そのモジュールを再インストールすることです。つまり、最初にすべての構成(フィールドなど)をremoveしようとします。だからそれは本当にオプションではありません。手動で、更新機能の特定の変更が可能ですが、これには退屈すぎると思います。
  • Featuresモジュールで説明されているように、構成の継続的な展開ではなく、再利用可能な機能の提供に重点が置かれます。これはそもそもそれがそのために設計されたものです。

そのため、現時点では、ステージングディレクトリをバージョン管理することをお勧めします。各開発者は、Active Directory全体をコピーするか、特定の構成ファイルだけをコピーすることにより、そこに配置するものを完全に制御できます。次に、ステージングディレクトリの変更がコミットされ、本番環境にプッシュされ、構成のインポートが実行されます(UIまたはdrushを使用)。

19
Berdir

これまでのところ素晴らしい答えです。みんなありがとう!

Drupal 8プロジェクトを最近開始し、次のワークフローを実装しました。

3つのフォルダがアクティブで、ステージングとエクスポートがあります。開発者はそれらをダンプしてエクスポートします。ステージに残したくない。共有構成がステージングフォルダーに直接格納されていない場合は、操作が簡単だと思います。それはただの伐採であり、私はこれについて難しい事実はありません...

現在のdrupal 8プロジェクトテンプレートはgithubで利用できます。また、devleoperのワークフローを高速化するための便利なdrushコマンドもいくつか作成しました。アクティブからエクスポートへの手動コピーは必要ありません。

4
webflo

私はまだこれを試していませんが、私の計画は、気になる構成のみを含む「デフォルト」の構成ファイルを含むカスタムモジュールを作成することです。他のモジュールには、他のモジュールをオーバーライドする構成を含めることができると思います。 (そうでない場合は、これを可能にする必要があります)。

Configフォルダーはそのままにしておく必要があると思います。それを無視します。インストール時に、個々のモジュールの構成ファイルすべてから自動生成されます。パスは長く、ランダムです。これらすべてをリポジトリに保持している場合は、別のリポジトリが必要になり、大量のデフォルトの不要な構成ファイルを運ぶことになります。

カスタムモジュールに構成を配置すると、メインコードベースの一部になります。

展開プロセスは次のようになります。

  1. Gitプルまたは何か新しいファイルを取得します。
  2. キャッシュをクリアします。
  3. デフォルト設定をリセットします。 (カスタムモジュールのファイルから)

必要に応じて、環境ごとにカスタムモジュールを(独自の構成で)作成できます。

2
jonpugh

注:質問に対する厳密な意味での回答ではありませんが、とにかくここに置いておきます。Featuresのリリースが8.xになり、ほこりがもう少し落ち着いたら、再訪して編集/削除します。これはコメントとしては大きすぎたので、0.02ポンドを獲得したいと思いました:-)

Features の大ファンとして、 Features モジュールのD8インカネーションに注目することをお勧めします。

プロジェクトページから取得

機能の3.xバージョンは、Drupal 8で新しい構成管理システムと統合する予定です。単純なサイト構成をエクスポートする必要があるだけの場合は、機能の代わりにD8構成管理システムを使用する必要があります。 。D8の機能を使用して、バンドルされた機能(「フォトギャラリー機能」など)をエクスポートします。

kindaが見る方法は、このアイデアにより、devteamsがサイトの小さな部分で作業しやすくなるということです。まだ不明な変数が多すぎるため、まだワークフローに進みませんが、現在の機能の展開手順との違いはそれほどありません。

CMIは素晴らしいです。しかし、私のサイトのほとんどはまだ機能モジュールで終了します(すべてのコンテンツタイプ、権限などをエクスポートする必要がないため、少量ですが)

2
Chapabu