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


19

У нас є кілька спеціальних модулів, які використовуються для декількох сайтів. Вони не можуть бути випущені як внесені модулі, наприклад, оскільки вони специфічні для клієнта, роблять припущення, що не працюють для модулів, що надаються, тощо.

Я знаю про наступні можливості боротьби з цим:

  • скопіюйте їх і вставте навколо. Очевидно важко постійно оновлювати модуль на всіх установках.

  • Майте одну установку на декількох сайтах, але це не завжди можливо.

  • Використовуйте підмодулі git, але вони можуть бути неприємними, їх легко забути оновити і не завжди підтримуються (наприклад, Pantheon)

  • Надішліть сценарії, щоб вийти із загального сховища git. Для цього вам потрібно AFAIK використовувати ударний макет для всього сайту, і ми зараз його не використовуємо.

  • http://drupal.org/project/fserver . Я ще цього не пробував, чи знає хтось, чи достатньо стабільний? Опис проекту не здається дуже перспективним і не існує версії 7.x.

Ще щось / краще? Що ви віддаєте перевагу і чому?


я думаю , що новий спосіб робити ці речі з додатком: drupal.org/project/apps
mojzis

Відповіді:


10

Як ви вже згадали, підхід Drush make - це версія, яку використовує моя команда.

Незважаючи на те, що ви зараз не використовуєте "drush make" для своїх сайтів, вам слід порівняно просто перейти до цього робочого процесу, якщо ви хочете, оскільки drush також забезпечує створення " drush make-generated", який генерує файл make з існуючого сайту. Таким чином, не потрібно відчувати, що варто лише для нових сайтів. :)


Дякую, я вирішив прийняти вашу відповідь. Мені потрібно звикнути робити штампи, щоб зрозуміти, як найкраще впоратися з цим у великих проектах з багатьма спеціальними модулями та переконати своїх колег, перш ніж я можу почати користуватися цим, хоча;) Чи є у вас ресурси для того, як підтримувати сайт, наприклад найкращий спосіб оновити версію, відновити сайт.
Бердір

2
У мене не було ресурсів, тому я написав один :) drupal.stackexchange.com/questions/33403/… Звичайно, сміливо коментуйте більш глибокі питання, якщо хочете. :)
Летаріон

1

Якщо всі сайти знаходяться на одному сервері, ви можете використовувати symlinkмодулі з центрального місця або rsyncякщо ви маєте справу з декількома серверами.

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


0

Здається, ви майже все виглядаєте на всі рішення. Коли я прочитав це, перше що прийде в моїй свідомості його два інші рішення , як rsyncі symlinkале знову - таки це не зручно підтримувати.

Потім згадав про той модуль Git Deploy, який насправді був хорошим комбо з підмодулями git.

Я ще не пробував цю ідею, але вона могла б спрацювати або хоча б дати вам поняття, як зламати її для власної системи.


Git розкриває інформацію про версію модулів contrib, але у нас немає модулів contrib, тому я не думаю, що це допоможе.
Бердір

0

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

ось як працює злиття git:

майстер

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

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

master -> звільнення

та сценарій bash / drush для оновлення гілок


Моє рішення засноване на цій статті nvie.com/posts/a-successful-git-branching-model
Refineo

Гм. Тож я міг би фактично додати інший сайт як віддалений та імпортувати звідти спеціальну гілку модуля. Це могло б працювати, але є відносно складним.
Бердір

0

Я використовую SVN замість Git для зберігання наших розроблених на замовлення модулів. Після внесення змін з localhost я просто запускаю скрипт bash, який виконує команду "оновлення svn" у визначених місцях сервера. Щоразу, коли я розгортаю модуль на нове місце, я оновлюю скрипт bash. Це дійсно проста установка і працює без зайвих клопотів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.