Управление релизами проектов Hudson и PHP - PullRequest
2 голосов
/ 13 июля 2010

Я хотел бы спросить о реальном опыте управления выпусками PHP-проектов через CI-сервер Hudson.

Наши проекты разделены на подпроекты: внешние интерфейсы, фреймворк, библиотеки. Все хранится в нашем SVN как собственный проект. Различные интерфейсы могут зависеть от разных версий фреймворка, который сам зависит от разных версий библиотек.

Пока что мы делаем управление релизами вручную. У нас есть одна среда, которая служит для тестирования и производства, чтобы избежать проблем различий в окружающей среде при выпуске проекта. Мы помечаем каждый подпроект в SVN номером выпуска и извлекаем все для тестирования, доступного в тестовом домене. После того, как мы выполним тестирование и исправим ошибки, мы помечаем новые версии всего в SVN как производственные и связываем производственный домен, чтобы указывать на новый код. У этого ручного процесса есть свои очевидные проблемы, и мы никак не можем его сохранить.

В рамках моего исследования по переходу на автоматизированное решение я уже установил Hudson и настроил его для проектов PHP (Phing, ppUnit и т. Д.). Я знаком с написанием сценариев сборки под Phing или Ant. Я изучил все возможные "основы" создания среды CI, подготовки проекта и сделал это. То, что я не нашел, - это пример управления выпусками, аналогичный тому, что мы делаем вручную, учитывая все имеющиеся у нас зависимости. Не могли бы вы указать мне правильное направление?

1 Ответ

1 голос
/ 02 февраля 2011

Боюсь, что нет такой сложной вещи легко доступны.Нам пришлось решить довольно похожую проблему, и в итоге мы использовали очень похожую конфигурацию, которую вы планировали использовать (или уже использовали).

У нас есть несколько ядер приложений, а затем конкретные модификации клиента.Все хранится в SVN.Кроме того, мы используем svn: externals, чтобы связать Framework и другие сторонние библиотеки с приложением.

Все делается с помощью Phing, и хотя нам понадобилось некоторое время, Phing очень помог, и я действительно рекомендую его.

Клиентские аддоны выбираются автоматически с помощью phing.Все настраивается через свойства сборки.

Для обновлений схемы базы данных мы очень довольны dbdeploy, который является частью Phing.Хотя нам пришлось немного изменить его для наших нужд.

Кроме того, мы добавили поддержку для создания предварительно сконфигурированного самораспаковывающегося установщика Linux, поэтому весь сложный процесс создания развертываемого пакета состоит из вызова одной цели phing и передачиправильный файл свойств сборки.Для создания этих инсталляторов мы используем эту простую технику (http://www.linuxjournal.com/node/1005818). Снова используя Phing, созданный пакет автоматически загружается на целевой сервер, выполняется по SSH для развертывания.

Затем мы используем Hudson для автоматического создания инсталляторных пакетов.(в дополнение к автоматическому запуску тестов phpunit и Selenium / Hmres) и их хранению в определенном месте / или как артефакты. Наша служба поддержки может затем захватить пакеты и выполнить развертывание в производственном режиме самостоятельно (наши среды QA / Test обновляются автоматическиHudson).

Кроме того, код автоматически кодируется и лицензируется с использованием ZendGuard, где это необходимо.

Краткое описание выше просто для иллюстрации того, чего можно достичь с помощью Hudson, Phing, SVN и PHP. Полная версиятехнические детали, очевидно, были бы слишком длинными для этого поста, но я был бы рад более подробно остановиться где-нибудь еще.

...