Мой процесс обычно управляется из репозитория управления исходным кодом (в моем случае SVN), что делает вещи намного проще (или, возможно, действительно ...).Идея состоит в том, чтобы сохранить все возможное в репо и использовать обновления и теги SVN для публикации изменений.
local.xml : я перемещаю этот файл в SVN в local.xml.dist
и игнорирую фактический local.xml
файл в репо.Это позволяет вам использовать разные учетные данные базы данных и хосты в ваших установках, не загрязняя базу кода.
прочее игнорирует : проверьте этот вопрос , чтобы найти больше файлов, которые следует игнорировать вбаза данных.По сути, все, что уникально для среды, должно храниться вне контроля версий и обрабатываться на реальном хосте.Ваши .htaccess
файлы здесь будут актуальны.
настройка хоста : моя промежуточная среда и среда разработки настроены на запуск из / trunk из репозитория.Здесь происходит разработка, и ее можно периодически запускать (или по запросу) через svn up
, чтобы показать клиенту новые функции и выполнить UAT.Тем не менее, производственная среда нуждается в некоторой защите от Дикого Запада магистрали, так что среда лишается тегов.Когда набор функций готов к выходу, я создаю новый тег из транка и делаю svn switch
, чтобы перейти к новому набору кодов.Такое поведение также дает мне возможность легко отменить производство (переключиться обратно на последний тег).Таким образом, я удалил из своей жизни все ручные добавления файлов, и это хорошо.
Еще лучшая система (в которой я еще не нуждался) будет использовать svn export
для создания полной копиидерево кодов в производственной системе, и используйте ln
для переключения между ними.Примерно так:
> cd /home/apacheuser
> ls -l
www -> /home/apacheuser/tag_1.0.1
tag_1.0.1
> svn export /url/for/repo/tags/1.0.2 tag_1.0.2
... svn exports here ...
> rm www; ln -s /home/apacheuser/tag_1.0.2 www
Таким образом, изменения версии происходят мгновенно.
db sync обратно из производства : чтобы я мог работать с производственными данными,У меня настроено задание cron для выгрузки производственной базы данных и ее импорта в стадию.Пока это происходит, скрипт удалит конфиденциальные данные клиентов (и изменит адреса электронной почты клиентов, чтобы все письма отправлялись мне).Он также изменит настройки шлюза кредитной карты на тестовый шлюз и изменит параметры base_url
, чтобы URL-адреса промежуточного сайта работали правильно.
new development : Вы можете заметить, что в разных средахиспользовать примерно одинаковую кодовую базу (за исключением любых новых изменений), что может показаться вам неприятным из-за того, что вы заметили об изменениях в базе данных и т. д.
Единственный способ справиться с этой сложностью (и правильный путь,в то же время!) должен убедиться, что сам код отслеживает необходимые изменения в среде.Magento поддерживает автоматическое обновление версий модулей, включая сценарии базы данных, которые вы должны использовать для внесения изменений в схему и т. Д. Это означает, что при развертывании нового кода в стадии подготовки / производства (или при получении его от другого разработчика в среде разработки),все исправления базы данных применяются автоматически.
Это также означает, что вам нужно написать новые функциональные возможности, чтобы они были максимально неразрушающими.Темы Magento, отключенные модули и тому подобное можно использовать, чтобы сделать это реальностью.Например, при создании новой темы для сайта не изменяйте поведение ядра и сохраняйте все новые ресурсы в теме, которая будет инертна в рабочей среде, до развертывания.
большеdevelopers : Эта установка основана на относительно небольшом количестве разработчиков проекта.Существует неявное предположение, что, когда вы хотите пометить новый выпуск, вы можете перевести магистраль в рабочее состояние.С большим количеством разработчиков это будет происходить все реже и реже, поэтому необходима более сложная настройка репо.Если я столкнусь с этим, я планирую перейти на использование git вместо SVN и использовать функциональные ветви для новых разработок.
Дайте мне знать, если что-то из этого было неясно.Надеюсь, это поможет!
Спасибо, Джо