Как вы управляете процессом сборки [с помощью Phing]?
Я пытаюсь использовать Phing для автоматизации:
- текущие тесты
- запуск миграции БД на каждом компьютере разработчика [с использованием dbdeply]
- развертывание в производство при необходимости
Я думаю, что имеет смысл добавить папку сборки в мой проект и поместить все мои файлы конфигурации сборки и db deltas в эту папку. и зафиксируйте все это в хранилище SVN. таким образом, каждый разработчик получит обновленные файлы сборки при выходе из svn. и иметь возможность запустить сборку, чтобы обновить свою БД с новыми изменениями.
на рабочем сервере: я планировал добавить еще один файл сборки, чтобы получить последнюю версию Tagged в svn и выполнить сжатие CSS и JS.
Я планировал реализовать непрерывную интеграцию, используя также PHPUnderControl, чтобы я мог отслеживать результат каждой сборки и получать уведомления в случае сбоя сборки.
Итак, вы думаете, что все это имеет смысл, или у вас есть другие лучшие предложения?
1 ответ
То, что вы говорите, имеет смысл: оно довольно близко к тому, что я часто использую (иногда с ant, иногда с phing, а иногда с некоторыми shell-скриптами).
в build
каталог, у меня было бы что-то вроде этого:
build/
testing/
development/
staging/
production/
common/
С одним build.xml
файл в каждом подкаталоге - все, включая другой build.xml
файл, расположенный в common
каталог, идея состоит в том, чтобы поместить как можно больше "общего" кода в "общий" build.xml
файл, и иметь специфичные для среды файлы, которые содержат как можно меньше кода XML.
Это можно сделать с помощью import
задача, которая существует в последней версии phing (не уверен, что она в стабильной версии - я использую проверку phing в SVN, чтобы получить ее, для проекта, над которым я сейчас работаю).
Однако, одна вещь: вы говорите, что хотите развернуть на рабочем месте с рабочего сервера; Я бы предпочел вместо этого:
- на сервере "разработки":
- экспорт из SVN
- сжать JS/CSS и все такое
- создать архив tar.gz
- загрузить этот архив на рабочий сервер
- на "производственном" сервере:
- распакуйте этот загруженный архив
- измените пару символических ссылок, чтобы использовать новую версию источников (см. ответ, который я дал здесь, для получения дополнительной информации)
- обновить, что должно быть сделано в БД
Идея заключается в том, чтобы:
- делать как можно меньше вещей на производственном сервере
- на случай, если что-то пойдет не так
- и в случае, если однажды ваш рабочий сервер не будет иметь доступа к серверу SVN
- иметь физический архив, который можно развернуть на нескольких производственных серверах
Да, и как примечание: вы должны написать некую документацию "как развернуть в производство", шаг за шагом!
Это будет действительно полезно в тот день, когда вы находитесь в отпуске, и кто-то другой должен развернуть в производство из-за срочного исправления ошибки;-)