Verwalten Sie benutzerdefinierte Module über mehrere Installationen hinweg

19

Wir haben einige benutzerdefinierte Module, die für mehrere Sites verwendet werden. Diese können nicht als beigestellte Module veröffentlicht werden, zum Beispiel weil sie kundenspezifisch sind, Annahmen treffen, die für beigestellte Module nicht funktionieren und so weiter.

Ich kenne die folgenden Möglichkeiten, um damit umzugehen:

  • Kopieren Sie sie und fügen Sie sie ein. Dies macht es offensichtlich schwierig, das Modul bei allen Installationen auf dem neuesten Stand zu halten.

  • Haben Sie eine einzelne Installation an mehreren Standorten, aber dies ist nicht immer möglich.

  • Verwenden Sie Git-Submodule, aber sie können unangenehm sein, es ist leicht zu vergessen, sie zu aktualisieren und werden nicht immer unterstützt (z. B. Pantheon)

  • Erstellen Sie Skripte, um sie aus einem gemeinsamen Git-Repository auszuchecken. Dafür muss AFAIK Drush Make für die gesamte Site verwenden, und wir verwenden es derzeit nicht.

  • http://drupal.org/project/fserver . Ich habe das noch nicht ausprobiert, weiß jemand, ob es stabil genug ist? Die Projektbeschreibung klingt nicht sehr vielversprechend und es gibt keine 7.x-Version.

Sonst noch was / besser? Was bevorzugen Sie und warum?

Berdir
quelle
Ich denke, die neue Art, diese Dinge zu tun, ist mit Apps: drupal.org/project/apps
mojzis

Antworten:

10

Der Drush- Make-Ansatz ist, wie Sie bereits erwähnt haben, die Version, die mein Team verwendet.

Auch wenn Sie derzeit kein drush make für Ihre Websites verwenden, sollte es für Sie relativ einfach sein, zu diesem Workflow zu wechseln, wenn Sie möchten, da drush auch die Funktion drush make-generate bietet , mit der die make-Datei von einer vorhandenen Website generiert wird. Es lohnt sich also nicht, sich nur für neue Websites zu interessieren. :)

Letharion
quelle
Danke, ich habe beschlossen, Ihre Antwort zu akzeptieren. Ich muss mich erst daran gewöhnen, Make-up zu drushen, herauszufinden, wie ich in großen Projekten mit vielen benutzerdefinierten Modulen am besten damit umgehen kann, und meine Mitarbeiter überzeugen, bevor ich damit anfangen kann Site, z. B. beste Möglichkeit zum Aktualisieren der Version, Neuerstellen einer Site.
Berdir
2
Ich hatte keine Ressourcen, also schrieb ich eine :) drupal.stackexchange.com/questions/33403/… Natürlich können Sie gerne mit tieferen Fragen kommentieren, wenn Sie möchten. :)
Letharion
1

Wenn sich alle Standorte auf demselben Server befinden, können Sie symlinkModule von einem zentralen Ort laden oder rsyncwenn Sie mit mehreren Servern arbeiten.

Dies wird das Problem der Verteilung von Dateien lösen, aber Sie müssen noch ein Upgrade auslösen. Es kann drushmit einem einfachen Skript automatisiert werden , das das Upgrade für jeden Standort einzeln aufruft.

Máté Gelei
quelle
0

Scheint so, als würde man fast auf alle Lösungen schauen. Als ich es las, zuerst , was kommen in meinem Kopf seine beiden anderen Lösungen wie rsyncoder symlinkaber auch hier ist es nicht angenehm zu halten.

Dann ist Git Deploy eine gute Kombination mit Git-Submodulen.

Ich habe diese Idee noch nicht ausprobiert, aber sie könnte funktionieren oder zumindest einen Hinweis darauf geben, wie man sie hackt, um ein eigenes System zu erstellen.

yvan
quelle
Git Deployment stellt Versionsinformationen von Contrib-Modulen zur Verfügung, es gibt jedoch keine Contrib-Module, sodass ich nicht denke, dass dies hilfreich wäre.
Berdir
0

Ich verwende ein separates Git-Repository für alle hinzugefügten / benutzerdefinierten Module, wobei sich jedes hinzugefügte oder benutzerdefinierte Modul in einem separaten Zweig befindet (nicht in einem Submodul).

So funktioniert der Git-Merge hier:

Meister

      <-- custom
        <-- custom module 1
        <-- custom module 2    

      <-- contrib
        <-- contrib module 1
        <-- contrib module 2     

master -> release

und ein Bash / Drush-Skript zum Aktualisieren der Zweige

Refineo
quelle
Meine Lösung basiert auf diesem Artikel nvie.com/posts/a-successful-git-branching-model
Refineo
Hm. So konnte ich dann im Wesentlichen eine andere Site als Remote hinzufügen und einen benutzerdefinierten Modulzweig von dort importieren. Das könnte funktionieren, ist aber relativ komplex.
Berdir
0

Ich verwende stattdessen SVN Git, um unsere kundenspezifisch entwickelten Module zu speichern. Nachdem ich die Änderung von localhost übernommen habe, führe ich einfach das Bash-Skript aus, mit dem der Befehl "svn update" an vordefinierten Serverstandorten ausgeführt wird. Immer wenn ich ein Modul an einem neuen Speicherort bereitstelle, aktualisiere ich das Bash-Skript. Es ist wirklich ein einfaches Setup und funktioniert problemlos.

Ajinkya Kulkarni
quelle