web-dev-qa-db-ja.com

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

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

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

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

編集

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

8
dragonmantank

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

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

要約する:

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

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

4
coreyp_1

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

1
Screenack

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

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

1
derhasi

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

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

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

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 /

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

1
tenken

私はこれを確かにしたいです。 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
Roy Segall

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

drush en -y modulename1 modulename2 

等々。

0
Nitesh Sethia

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

  1. 端末からdrushコマンドを使用して:
    A。 drush dl modulename-最初にモジュールをダウンロードするため
    B。 drush en -y modulename-モジュールを有効にする

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

0
neetu morwani

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

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

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

このフォーラムのURLがお役に立てば幸いです。 BashスクリプトとDrushを使用したDrupalオートメーション

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

drush en -y modulename
0
Pushpinder Rana