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