Управление пользовательскими модулями в нескольких установках

19

У нас есть несколько пользовательских модулей, которые используются для нескольких сайтов. Они не могут быть выпущены как добавленные модули, например, потому что они зависят от клиента, делают предположения, которые не работают для добавленных модулей и так далее.

Я знаю о следующих возможностях справиться с этим:

  • скопируйте и вставьте их. Очевидно, что трудно поддерживать модуль в актуальном состоянии во всех установках.

  • Имейте единственную многосайтовую установку, но это не всегда возможно.

  • Используйте подмодули git, но они могут быть неприятными, их легко забыть обновить и они не всегда поддерживаются (например, Пантеон)

  • Сценарии Drush make для проверки из общего репозитория git. Для этого вам, AFAIK, нужно использовать drush make для всего сайта, и мы не используем его в настоящее время.

  • http://drupal.org/project/fserver . Я еще не пробовал, кто-нибудь знает, достаточно ли он стабилен? Описание проекта не выглядит многообещающим, и нет версии 7.x.

Что-нибудь еще / лучше? Что вы предпочитаете и почему?

Berdir
источник
я думаю, что новый способ сделать это с приложениями: drupal.org/project/apps
mojzis

Ответы:

10

Drush делают подход, как вы уже упоминали, это версия моя команда использует.

Даже если вы в настоящее время не используете drush make для своих сайтов, вам будет относительно просто перейти к этому рабочему процессу, если вы хотите, так как drush также предоставляет drush make-generate, который сгенерирует файл make из существующего сайта. Таким образом, нет необходимости чувствовать, что это стоит только для новых сайтов. :)

Letharion
источник
Спасибо, я решил принять ваш ответ. Мне нужно привыкнуть к drush make, выяснить, как наилучшим образом справиться с этим в больших проектах со многими пользовательскими модулями, и убедить моих коллег, прежде чем я смогу начать использовать это;) Есть ли у вас какие-либо ресурсы о том, как поддерживать сайт, например, лучший способ обновить версию, перестроить сайт.
Бердир
2
У меня не было никаких ресурсов, поэтому я написал один :) drupal.stackexchange.com/questions/33403/… Конечно, не стесняйтесь комментировать более глубокие вопросы, если хотите. :)
Летарион
1

Если все сайты находятся на одном сервере, вы можете использовать их symlinkдля загрузки модулей из центрального места или rsyncесли вы имеете дело с несколькими серверами.

Это решит проблему распространения файлов, но вам все равно нужно запустить обновление. Это может быть автоматизировано с drushпомощью простого сценария, который вызывает обновление на всех сайтах, один за другим.

Мате Гелеи
источник
0

Похоже, что вы почти приглядываетесь ко всем решениям. Когда я читаю его, вначале мне вспоминаются два других решения, rsyncили, symlinkопять же, его неудобно поддерживать.

Затем вспомнили об этом модуле Git Deploy, который на самом деле был хорошей комбинацией с подмодулями git.

Я еще не пробовал эту идею, но она могла бы сработать или, по крайней мере, дать вам некоторое представление о том, как взломать ее для создания собственной системы.

Айван
источник
Git deploy предоставляет информацию о версии модулей contrib, но у нас нет модулей contrib, поэтому я не думаю, что это поможет.
Бердир
0

Я использую отдельный репозиторий git для всех добавленных / пользовательских модулей, где каждый добавленный или пользовательский модуль находится в отдельной ветви (не в подмодуле).

вот как работает git merge:

мастер

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

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

мастер -> релиз

и скрипт bash / drush для обновления веток

Refineo
источник
Мое решение основано на этой статье nvie.com/posts/a-successful-git-branching-model
Refineo
Гектометр Таким образом, я мог бы по существу добавить другой сайт как удаленный и импортировать оттуда пользовательскую ветвь модуля. Это может сработать, но это относительно сложно.
Бердир
0

Я использую SVN вместо Git для хранения наших пользовательских модулей. После того, как я фиксирую изменения с локального хоста, я просто запускаю скрипт bash, который запускает команду «svn update» в предопределенных местоположениях сервера. Всякий раз, когда я развертываю модуль в новом месте, я обновляю скрипт bash. Это действительно простая установка и работает без каких-либо хлопот.

Ajinkya Kulkarni
источник