Zarządzaj niestandardowymi modułami w wielu instalacjach

19

Mamy kilka niestandardowych modułów używanych w wielu witrynach. Nie można ich zwolnić jako modułów przekazanych, na przykład dlatego, że są one specyficzne dla klienta, przyjmują założenia, które nie działają dla modułów przekazanych i tak dalej.

Wiem o następujących możliwościach poradzenia sobie z tym:

  • skopiuj i wklej je. Utrudnia oczywiście aktualizowanie modułu we wszystkich instalacjach.

  • Zainstaluj jedną instalację w wielu lokalizacjach, ale nie zawsze jest to możliwe.

  • Używaj podmodułów git, ale mogą być nieprzyjemne, łatwo zapomnieć o ich aktualizacji i nie zawsze są obsługiwane (np. Panteon)

  • Drush tworzy skrypty, aby wyewidencjonować ze wspólnego repozytorium git. W tym celu AFAIK musi korzystać z drush make dla całej witryny, a my nie używamy go obecnie.

  • http://drupal.org/project/fserver . Jeszcze tego nie wypróbowałem, czy ktoś wie, czy jest wystarczająco stabilny? Opis projektu nie brzmi obiecująco i nie ma wersji 7.x.

Coś jeszcze / lepszego? Co wolisz i dlaczego?

Berdir
źródło
myślę, że nowy sposób robienia tych rzeczy jest z aplikacjami: drupal.org/project/apps
mojzis

Odpowiedzi:

10

Podejście Drush , jak już wspomniałeś, to wersja, z której korzysta mój zespół.

Chociaż obecnie nie używasz drush make dla swoich witryn, przejście do tego przepływu pracy powinno być stosunkowo proste, jeśli chcesz, ponieważ drush zapewnia również drush make-generator, który wygeneruje plik make z istniejącej witryny. Dlatego nie musisz się czuć, jakby warto było tylko w przypadku nowych witryn. :)

Letharion
źródło
Dzięki, zdecydowałem się przyjąć twoją odpowiedź. Muszę jednak przyzwyczaić się do drush make, wymyślić, jak najlepiej sobie z tym poradzić w dużych projektach z wieloma niestandardowymi modułami i przekonać moich współpracowników, zanim zacznę z tego korzystać;) Czy masz jakieś zasoby, jak utrzymać strona, np. najlepszy sposób na aktualizację wersji, przebudowanie strony.
Berdir
2
Nie miałem żadnych zasobów, więc napisałem jeden :) drupal.stackexchange.com/questions/33403/... Oczywiście, jeśli chcesz, możesz komentować głębsze pytania. :)
Letharion
1

Jeśli wszystkie witryny znajdują się na tym samym serwerze, możesz użyć symlinkdo załadowania modułów z centralnego miejsca lub rsyncjeśli masz do czynienia z wieloma serwerami.

To rozwiąże problem z dystrybucją plików, ale nadal musisz uruchomić aktualizację. Można go zautomatyzować za drushpomocą prostego skryptu, który wywołuje aktualizację na każdej stronie, jeden po drugim.

Máté Gelei
źródło
0

Wygląda na to, że prawie wyglądasz prawie we wszystkich rozwiązaniach. Kiedy czytam to, przede wszystkim, co się w moim umyśle, jego dwa inne rozwiązania, takie jak rsyncalbo symlinkale znowu nie jest to wygodne w utrzymaniu.

Potem przypomniano sobie o tym module Git Deploy, który jest naprawdę ładnym połączeniem z podmodułami git.

Nie próbowałem jeszcze tego pomysłu, ale może zadziałać, a przynajmniej dać ci wskazówkę, jak zhakować go, aby stworzyć własny system.

Yvan
źródło
Wdrożenie Git ujawnia informacje o wersji modułów contrib, ale nie mamy modułów contrib, więc nie sądzę, żeby to pomogło.
Berdir
0

Używam osobnego repozytorium git dla wszystkich wniesionych / niestandardowych modułów, gdzie każdy wniesiony lub niestandardowy moduł znajduje się w osobnej gałęzi (nie w submodule).

oto jak działa tutaj scalanie git:

mistrz

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

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

master -> release

oraz skrypt bash / drush do aktualizacji gałęzi

Refineo
źródło
Moje rozwiązanie oparte jest na tym artykule nvie.com/posts/a-successful-git-branching-model
Refineo
Hm Mogę więc zasadniczo dodać kolejną witrynę jako zdalną i stamtąd zaimportować niestandardową gałąź modułu. To może działać, ale jest stosunkowo złożone.
Berdir
0

Używam SVN zamiast Git do przechowywania naszych niestandardowych modułów. Po zatwierdzeniu zmiany z localhost, po prostu uruchamiam skrypt bash, który uruchamia polecenie „svn update” w predefiniowanych lokalizacjach serwera. Ilekroć wdrażam moduł w nowej lokalizacji, aktualizuję skrypt bash. Jest to naprawdę prosta konfiguracja i działa bez żadnych problemów.

Ajinkya Kulkarni
źródło