Я начинаю новый проект и хочу пошаговый процесс сборки для своей разработки, непрерывной интеграции и производственных серверов.
Я хочу, чтобы этот процесс был включен в мой источник контроля (git / github) и надежно работал на любом из трех моих серверов, которые довольно похожи, но имеют разные пути для корня проекта.
Я планировал использовать Phing, PHPDocumentor, PHP_CodeSniffer, PHPUnit и т. Д., Установленные через Pyrus, в локализованную установку PEAR / PEAR2, которая может быть развернута вместе с проектом, поэтому я мог быть уверен в своих зависимостях во время сборки.
Однако у меня не было ничего, кроме проблем с настройкой.
Это первый раз, когда я пытался настроить такую систему сборки, и установка * nix не является моей сильной стороной (хотя в конечном итоге я всегда получаю надежную систему), так что слабое звено здесь может будь мной. Тем не менее, у меня много проблем с PEAR.
Например, как бы тщательно я ни устанавливал через pyrus, все заканчивается путями. Рассматривая некоторые из пакетов PEAR, все пути жестко запрограммированы (вероятно, установлены во время выполнения) с относительными путями, которые я использовал во время установки (./pear и т. Д.). Это означает, что я могу успешно запускать пакеты только из папки, в которой находился pyrus во время установки, даже несмотря на то, что сценарии запуска были помещены в ./pear/bin, и я установил папку bin во время установки. Иногда пути внутренне конфликтуют с одним пакетом, поэтому он хочет запустить отсюда, но он хочет управлять конфигурацией оттуда ...
PHPDocumentor не обрабатывает PHP5.3 (и не будет работать для меня вообще, может быть, потому что у него есть проблемы, может быть, потому что я его неправильно установил?), Поэтому я заменил его на PHPDoctor, который изначально кажется довольно хорошим.
Другой пример, после установки Phing будет работать, но просто тихо умирает. После его изучения и отслеживания я обнаружил, что непонятная функция в строке 70 файла / io / PhingFile получает нулевое значение для требуемого аргумента, в результате чего возникает исключение ConfigurationException, из-за которого он молча умирает.
Я уверен, что смогу заставить все это работать нормально, но я НЕ уверен, что это когда-либо будет развертываемая надежная система, и я действительно не хочу отлаживать, настраивать, а затем поддерживать большая куча самоизменяющихся пакетов PEAR, которые необходимо повторно настраивать при каждом обновлении.
Итак, наконец, вопрос = о)
У кого-нибудь есть действительно хорошая надежная система сборки, использующая эти приложения? Был ли какой-то трюк с этим?
Или у всех есть хорошая надежная система сборки, и это просто моя наивность с * nix установками и конфигурацией системы, которая делает все это похожим на двойную помощь clusterphuckery?
У кого-нибудь есть указания по настройке такой системы для работы на нескольких серверах, или я просто шучу? Может быть, я должен просто сделать отдельные установки в системах за пределами корневого каталога проекта и продолжить разработку?