makefileを介してDrushで新しいモジュールを有効にする方法


8

職場では、新しいサイトをgitで設定し、ローカルで開発することに移行しています。これまでのところ、インストールプロファイルと一緒にDrush Makeファイルを作成しました。これをパペット経由でスクリプト化したので、ユーザーがリポジトリの新しいクローンを作成すると、すべてのパッケージがダウンロードされ、基本的なサイトインストールが実行されます。これは問題なく動作します。

さて、私の質問は、サイトに新しいモジュールを使用する必要がある場合です。たとえば、サイトの新しいモジュールを作成します。他の開発者にgitからプルして新しいモジュールを自動的にインストールしてほしい。それをdrush makeファイルに追加すると、ダウンロードのみが行われ、「drush si」を実行すると、サイトが再インストールされ、すべてのデータが消去されます。

これを達成するための最良の方法は何ですか?

編集する

私はこれを適切に説明していません。drushのmakefileエントリに基づいてモジュールを自動的に有効にする方法を探しています。アイデアは、ユーザーがプロジェクトをチェックアウトし、settings.phpファイルが存在しない場合はパペットに「drush make」と「drush si」を実行させることです。私が理解する必要があるのは、ユーザーが次にプルを実行し、新しいモジュールを追加したときに、スクリプトによってそれを自動的に有効にする方法です。必要な場合は、makefileを解析して「drush en」を手動で実行するために何かを書く必要がありますが、これを行うために事前にビルドされたものを見つけたいと思います。


"drush en"は、あなたがパーチャンスを求めているものではありませんか?
Sam152 2013年

自動化する方法が必要です。'drush en'はCLIから実行できますが、新しいモジュールを判別して自動的に有効にする方法が必要です。
dragonmantank 2013年

1
問題は、モジュールを一連のファイルとして提示しても、それを有効にしたいという意味ではないということです。誰かがその決定をしなければなりません。たとえば、ビューをダウンロードすると、ビューUIも表示されます。これを有効にしますか?それは意識的な決定です。そのため、モジュールのリストが必要であり、スクリプト内にある場合もあります。
アルフレッドアームストロング

すみません、忘れてください。makeによってすべてが行われることの意味はわかりませんが、私はあなたが何を意味しているのかを理解しています。
アルフレッドアームストロング

1
@AlfredArmstrongアイデアは、私はすでにメイクファイルをキュレートする必要があるため、それを何らかの方法で使用するだけであるということでした。「devel」を有効にしたいが「devel_generate」は有効にしない場合、makeファイルには「devel」のみが入ります。後で「devel_generate」を有効にすることに決めた場合は、それをmakeファイルに追加します。私はあなたが言及した理由のために利用可能なファイルだけに基づいてそれをしたくないので、私はそれを何らかの方法で制御する必要があります。
dragonmantank 2013年

回答:


4

私は、可能な限り自動化しようとする大きな開発/ステージ/製品フローを持つ会社で働いていました。すべてはコードで行う必要があり、機能または更新フックを使用してスクリプト化しました。

基本的に、必要なのは、更新フックを含むために存在する1つのカスタムモジュールを用意することです。このようにして、開発者が更新をコードベースにプルすると、db updateを実行し、モジュールの有効化/無効化を実行する必要があるすべてのことを実行できます。モジュールはインストール時にすでに最新であると見なされ、新しい更新のみを実行するため、更新フックは新しいインストールには影響しません。

要約する:

  1. インストールプロファイルを引き続き使用して、必要なインストールタスク(モジュールの有効化など)を実行します。
  2. hook_update_NXXX()を使用するカスタムの「更新」モジュールを使用して、新しいモジュールを有効化/無効化します。それ以外の場合は、サイトの管理タスクを同期させます。

これは同様のアプローチについて話し、コード例を提供する投稿です。


1

これは素晴らしい質問です。drush makeモジュールのダウンロードに便利です。モジュールの肥大化に貢献したくありません。上ここの場合は延長しないようにするmakeこの方法で。おそらく、機能は、サイトのモジュールが有効な状態やその他の構成の側面を管理するのに最適です。


1

ワークフローの変更を検討してください。

分散作業を行い、有効化モジュールと他の構成値を "共有"したいようです...どういうわけか。

考えてみれば、Drupalの「コア」やDrupal.orgでさえ、これを行わないでください。コードは、継続的ビルドプロセスで実行されるコアおよびコミュニティモジュールに送信されます。Drupal.orgと多くのプロジェクトがJenkinsを使用しています。

Drupal開発向けのJenkinsのインストールでは、Phingも使用します。次のgitリポジトリを参照してください:http ://reload.github.io/jenkins-drupal-template/

Jenkinsを使用すると、マスターGitリポジトリにコードをプッシュし、インストールプロファイルとDrush Makefileからデモサイト用にサイトを構築できます。これは問題を正確に解決しませんが、モジュールを追加/有効化/削除するためにすべての変更をプッシュする1つの場所を提供します。うまくいけば、すべてが「ビルドを壊す」ことはありません。

ビルドが壊れていないと仮定します-その変更をローカル開発システムにプルしても安全です。

Jenkins +ステージングサーバーまたは開発サーバーは、開発のほんの一部です。

ローカルワークフローでは、インストールプロファイルとメイクファイルを使用できます。コンテンツを生成する余裕がある場合は、カスタムモジュールを使用してMigrateでコンテンツを共有することを検討してください。MigrateとPhingの使用法を使用して開発者とコンテンツを共有する例は、こちらで確認できます。

http://marzeelabs.org/blog/2014/03/17/coding-as-a-team-content-fixtures/ http://marzeelabs.org/blog/2014/03/03/coding-as-a- team-automation-using-phing /

最後に、継続的な統合とチームとの作業に関するDrupal Camp Ohio 2014のセッションでこのPDFをご覧ください。


1

同じ目的でマスターを使用しています。これは、settings.phpを使用して、マスターモジュールが何かについての情報を提供します。単純なコマンドdrush master-executeで、不足しているすべてのモジュール(およびその依存関係)が有効になり、使用されなくなったモジュールは無効になります。

現在、モジュールはmakefileから情報を読み取っていませんが、新しいリリースのオプションになる可能性があります。


0

モジュールオプションを使用して手動で、またはdrushコマンドを使用してターミナルでモジュールを有効にすることができます

drush en -y modulename1 modulename2 

等々。


モジュールを手動で有効にする方法だけでなく、メイクファイルに基づいてこれを自動化する方法を探しています。
dragonmantank 2013年

0

モジュールは次の2つの方法で有効にできます。

  1. 端末からの使用のいずれかdrushの:によってコマンドを
    A. drush dl modulename最初にモジュールをダウンロードするために-
    B. drush en -y modulenameモジュールを可能にします-

  2. [ モジュール ]メニューオプションを使用して、表示されているモジュールの数からモジュールを有効にします。


モジュールを手動で有効にする方法だけでなく、メイクファイルに基づいてこれを自動化する方法を探しています。
dragonmantank 2013年

さらにいくつかの方法があります。module_enable()例えば。または、準備されたデータベースをインポートします。
leymannx 2015年

0

私はこれを確かにしたいです。make関数は、サイトのさまざまな部分をダウンロードするために使用されます:gitを介したモジュール、テーマ、およびプロジェクト。インストールプロファイルを書き留めると、依存するモジュールの情報ファイルに書き込まれます。問題は、既存のプロファイルのインストールプロファイルに新しいモジュールを追加する必要があるときです-私は正しいですか?

そのため、Nが数字の更新を表す場合は、hook_update_Nを使用する必要があります。フックは、スキームの更新、変数の追加などのアクションを実行する必要があるモジュールに使用され、OpenScholarなどのサイトおよび配布に使用され、ライブサイトで新しいダウンロードモジュールを有効にします。

おそらくこれを最も一般的なモジュールに追加する必要があり、関数は次のようになりますhttps://github.com/openscholar/openscholar/blob/SCHOLAR-3.x/openscholar/modules/os/os.install#L16

フックはmodule.installファイルに配置する必要があります。UIを使用している場合は、www.site.com / update.phpにアクセスする必要があります。drushを使用している場合は、drush updbコマンドを使用します。


0

私が理解しているように、Drush .makeファイルはdrupal.orgからのみプロジェクトをダウンロードします。一部のモジュールを有効にしたい場合は、インストールプロファイル**(。install)**で実行できます。インストールプロファイルには、インストール時に有効にするモジュールのオプションが表示されます。

最近、私は.makeファイルを使用して1つのディストリビューションにも貢献しました。ここで.makeのすべての経験を共有しまし。これはあなたが正確に何を求めているのかとは関係ありませんが、.makeファイルが正確に何をするのかを理解するのに役立ちます。

したがって、この全体のタスクから、私が理解していることですが、.makeファイルを使用すると、モジュールの有効化を自動化できません。これを行うには、他のいくつかのアプローチに従う必要があります。

このフォーラムのURLがお役に立てば幸いです。 BashスクリプトとDrushによるDrupalの自動化

Drushコマンドを正確に使用するbashスクリプトを記述する必要があります。

drush en -y modulename

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.