





Вот что мы делаем:
У нас есть несколько настраиваемых скриптов, которые заботятся об обновлении нашей базы данных и переходе к производственной среде. Для нашей базы данных мы храним все дельты в одной папке, и скрипт проверяет текущий уровень БД на доступные дельты и, при необходимости, применяет их.
Для продвижения в производство у нас есть другой скрипт, который извлекает все производственные данные, а затем запускает rsync, чтобы подтолкнуть изменения.
Вы не упоминаете, какой у вас уровень контроля над серверами, но общий процесс будет таким же для общей разработки.
Я думаю, что все делают эти вещи немного по-разному, в зависимости от конкретного приложения. Вот наша установка:
Перед выпуском:
/trunk./tags/yymmddhhiiss.Как только он стабилизируется, мы запускаем сценарий развертывания:
/current, чтобы она указывала на только что извлеченный тег.Если нам нужно быстро внести небольшое изменение, мы объединяем его с текущим тегом, и затем мы можем запустить гораздо более простой процесс исправления на сервере:
svn updateОбратите внимание, что есть определенные инструменты, которые предназначены для структурирования / автоматизации этих процессов. Phing - это один, а Symfony имеет свой собственный пакетная система, который раньше был отдельным проектом под названием паке. И, как будто этого недостаточно, Zend Framework собирается создать их собственный вариант. Все это действительно немного беспорядочно, но Phing, вероятно, наиболее широко используется. Вы также можете использовать что-то не относящееся к php, например Муравей или Capistrano. Мы просто используем сценарии оболочки, которые в основном удовлетворяют те же потребности.
У нас также есть непрерывная сборка, которая извлекается из магистрали и запускает все тесты. В настоящее время у нас есть только базовая коллекция сценариев оболочки, выполняющих это, но мы рассматриваем возможность перехода на PhpUnderControl или xinc.
Шаг миграции, возможно, заслуживает небольшого пояснения. В них содержатся изменения в базе данных, а также другие задачи, которые необходимо выполнить для нового выпуска. На данный момент наши миграции немного просты; У нас просто есть папка с кучей сценариев .php и .sql, и во время миграции они запускаются последовательно. Мы отслеживаем, какие изменения были внесены, - это очищать папку migrations сразу после создания нового тега. Вероятно, было бы разумнее использовать базу данных для регистрации того, какие изменения были выполнены. Мы считаем, что для этой цели можно использовать что-то вроде шумный.
большое спасибо, думаю, я попробую это. phpUnderControl выглядит очень многообещающе