Мне нужно довести сайт до контроля версий и настроить непрерывную среду интеграции

Я предприниматель с проектом Drupal 6x, который стал достаточно маленьким, чтобы не требовать контроля версий (для разработчиков), но теперь я убежден, что без него нет никакого способа. Есть обширная документация по JIRA, в комплекте с хорошо написанными User Stories, охватывающих все. Я немного ознакомился с тем, как это можно сделать, и придумал следующий план -

  1. Отдельный код сайта из базы данных с использованием модулей
    1. Контекст
    2. Особенности
    3. Strongarm
    4. Профайлер
  2. Поместите код в репозиторий SVN и создайте промежуточный сайт
  3. Создайте зеркало промежуточного сервера на сервере производства EC2.
  4. Создайте тесты Selenium и запустите их в облаке, используя Saucelabs
  5. Создайте рабочий процесс сборки в JIRA Studio с помощью Elastic Bamboo для запуска автоматических обновлений.
  6. Обновление и установка профилей с помощью Drush Make
  7. Запуск обновлений на рабочем сервере (я не уверен, как)

Начнем с того, что я составил список из 50 «функций», каждый со своими компонентами (виды, типы контента, модули и т. д.). Это, без сомнения, будет сложным, так как сайт содержит около десятка настраиваемых модулей и веб-сервисов, не говоря уже о еще десятке экземпляров типа контента «приложение», содержащих пользовательский код (большинство из которых я хотел бы преобразовать в обновляемые представления или модули) , Хорошо, что сайт еще не выпущен, поэтому риск все еще ограничен.

Есть ли у кого-нибудь опыт в чем-то подобном? Какие подводные камни и ограничения я должен ожидать? Я был бы очень признателен за любые предложения по улучшению /исправлению вышеуказанного плана или любому прозрению или советам, которые, по мнению экспертов, могут иметь для меня.

40 голосов | спросил druflex 2 J0000006Europe/Moscow 2011, 01:55:19

1 ответ


23

Хорошо, я попробую :) Я не смогу полностью ответить на ваш вопрос, но, возможно, у вас есть несколько интересных советов. Обратите внимание, что моя нумерация не находится в прямом ответе на ваш:)

  1. Как я уже упоминал в комментарии, ни один проект не слишком мал для контроля версий. Я лично рекомендую Git. Причинами очевидной является его высокая скорость (время ожидания в git измеряется в миллисекундах, а не секундах) и огромное количество функций. Это может быть немного сложно подобрать из-за странных имен и аргументов, но следующая документация объясняет многие из них really good: http://www.eecs.harvard.edu/~cduan/technical/git/. Другая причина заключается в том, что теперь он используется drupal.org, поэтому знание git поможет вам, когда вы захотите внести свой вклад (предоставление патчей, тестирование патчей, выпуск модулей, ...)

  2. Тем не менее, если вы хотите использовать SVN по какой-либо причине (например, интеграцию с услугами, которые вы планируете использовать), тогда идите. SVN также хорошо работает и намного лучше, чем без контроля источника. (Если вы не спросите Линус Торвальдс ...). Кроме того, часто возникают проблемы с переходом от одного VCS к другому, если вы передумаете. SVN -> Например, Git работает хорошо.

  3. В-третьих, подходите к этому шаг за шагом. Не пытайтесь делать все сразу. Дайте вам (и вашим разработчикам) время, чтобы изучить новые инструменты.

  4. Переключение с Drupal 6 на Drupal 7 не является тривиальной задачей. Особенно с большим пользовательским кодом. Обратите внимание, что есть только тонны изменений API и новых концепций (например, сущность /полевая система), есть также то, что многие предоставленные модули еще не полностью готовы.

  5. Управление развертывания является одна из слабых точек Drupal, что также не изменились, что многое в Drupal 7. Мы знаем о проблеме и люди упорно работают, чтобы решить эту проблему для Drupal 8: http://groups.drupal.org/build-systems-change-management/cmi . Особенности и т. Д. Помогают, но это не серебряная пуля. Не все может быть экспортировано как функция.

  6. Существует также несколько опций Drupal для развертывания промежуточных /производственных сайтов. Пантеон (все еще в бета-версии) и Acquia Dev Cloud возможно, стоит проверить.

  7. Непрерывная интеграция, автоматическое тестирование важны и действительно полезны , но также требует времени для настройки, записи тестов и т. д. Время, которое вы могли бы или не могли бы иметь на данный момент. Но особенно автоматизированные тесты - это область, где легко сделать дополнительные улучшения. Когда у вас есть среда, настроенная для их запуска, вы можете писать все больше и больше тестов по мере возможности.

Итак, вот моя рекомендация для обновленного вопроса в комментарии:

Завершите и отпустите как есть, , но начните использовать VCS (систему управления версиями) для Drupal 6. Создайте промежуточную среду для своего сайта. Посмотрите, какие (внесенные) модули вы используете, и проверьте, возможен ли порт Drupal 7 в этой точке. Не стоит недооценивать время, которое потребуется. Также начните улучшать процесс тестирования /развертывания, начиная с того, что, по вашему мнению, принесет вам наибольшую выгоду /стоимость.

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

ответил Berdir 4 J0000006Europe/Moscow 2011, 13:45:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132