У кого-нибудь есть рабочий процесс разработки/постановки/развертывания с php/mysql? [закрыто]


Я думаю о хорошем рабочем процессе для веб-разработки php/mysql.

У кого-нибудь есть какие-нибудь советы?

Author: Zoran Zaric, 2009-01-11

2 answers

Вот что мы делаем:

  1. Каждый работает над своими проектами в своей отрасли (код, тесты и т.д.)
  2. Когда все выглядит хорошо, оно объединяется в магистраль
  3. phpUnderControl перестраивает магистраль, запускает все наши PHPUnit тесты, создает документацию, обновляет базу данных и т. Д.
  4. Если все это пройдет, мы сольемся в стабильную
  5. Стабильная полностью перестраивается, как магистраль
  6. Стабильность вручную повышается на наш производственный сервер

Мы у вас есть несколько пользовательских сценариев, которые позаботятся об обновлении нашей базы данных и нашем продвижении к производству. Для нашей базы данных мы храним все дельты в одной папке, и скрипт проверяет текущий уровень базы данных на соответствие доступным дельтам и, при необходимости, применяет их.

Для продвижения в производство у нас есть еще один скрипт, который удаляет все производственные данные, а затем запускает rsync для внесения изменений.

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

 12
Author: dragonmantank, 2009-01-11 03:46:48

Я думаю, что все делают эти вещи немного по-разному, в зависимости от конкретного применения. Вот наша настройка:

Перед выпуском:

  • Все обязуются /trunk.
  • Когда мы хотим запустить выпуск, мы копируем магистраль в /tags/yymmddhhiiss.
  • Мы стабилизируем метку.

Как только он стабилизируется, мы запускаем сценарий развертывания:

  • На рабочем сервере извлеките новый тег.
  • Создайте дамп базы данных.
  • Остановить демонов и завершите работу веб-приложений.
  • Переключите символическую ссылку /current, чтобы указать на только что извлеченный тег.
  • Запустите сценарии миграции.
  • Перезапустите демонов и приложения.

Если нам нужно быстро внести небольшое изменение, мы объединяем его с текущим тегом, а затем можем запустить гораздо более простой процесс исправления на сервере:

  • Остановите демонов и завершите работу веб-приложений.
  • Выполнить svn update
  • Перезапустить демонов и приложения.

Обратите внимание, что существуют определенные инструменты, которые направлены на структурирование/автоматизацию этих процессов. Phing является одним, и Symfony имеет свою собственную пакетную систему, которая раньше была самостоятельным проектом под названием pake. И как будто этого недостаточно, Zend Framework собирается создать свой собственный вариант. Все это действительно немного запутано, но Phing, вероятно, наиболее широко используется. Вы также можете использовать что-то, не относящееся к php, например как Муравей или Капистрано. Мы просто используем сценарии оболочки, которые в основном удовлетворяют ту же потребность.

У нас также есть непрерывная сборка, которая выполняется из магистрали и выполняет все тесты. В настоящее время у нас есть только базовая коллекция сценариев оболочки, выполняющих это, но мы рассматриваем возможность перехода на phpUnderControl или xinc.

Шаг миграции, возможно, заслуживает небольшого объяснения. Файл содержит изменения в базе данных, а также другие задачи, которые необходимо выполнить для нового выпуска. На данный момент наши миграции немного просты; У нас просто есть папка с кучей сценариев .php и .sql, и во время миграции они выполняются последовательно. Способ, которым мы отслеживаем, какие изменения были выполнены, заключается в очистке папки migrations сразу после создания нового тега. Вероятно, было бы разумнее использовать базу данных для регистрации изменений, которые были выполнены. Считается, что мы принимаем что-то вроде хулиганства для этой цели.

 7
Author: troelskn, 2016-08-08 13:16:21