Настройка цикла развертывания / сборки / CI для проектов PHP

Я большую часть своего времени являюсь разработчиком-одиночкой, работаю над рядом крупных, в основном, проектов на основе PHP. Я хочу профессионализировать и автоматизировать, как обрабатываются изменения в кодовой базе, и создать процесс непрерывной интеграции, который делает возможным переход к работе в команде без внесения фундаментальных изменений.

Сейчас я занимаюсь тем, что у меня есть локальная тестовая среда для каждого проекта; Я использую SVN для каждого проекта; Изменения тестируются локально, а затем передаются в онлайн-версию, обычно через FTP. API документация генерируется вручную из исходного кода; Модульные тесты - это то, чем я занимаюсь медленно, и это еще не часть моей повседневной жизни.

«Цикл сборки», который я предполагаю, будет делать следующее:

Набор изменений проверяется в SVN после локального тестирования.

Я начинаю процесс сборки. Ревизия SVN HEAD извлекается, модифицируется при необходимости и готовится к загрузке.

Документация по API генерируется автоматически - если я еще не настроил ее подробно, используя шаблон по умолчанию, сканирую всю базу кода.

Новая версия развернута в удаленном местоположении через FTP (включая переименование некоторых каталогов, chmodding, импорт баз данных и тому подобное.) Это то, что мне уже нравитсяPhing очень, но я открыт для альтернатив, конечно.

Модульные тесты, расположенные в предопределенном месте, выполняются. Мне сообщают об их неудаче или успехе с использованием электронной почты, RSS или (предпочтительно) вывода HTML, которые я могу взять и поместить на веб-страницу.

(опционально) текстовый файл «changelog» для конечного пользователя в предопределенном месте обновляется с помощью предопределенной части сообщения фиксации («Теперь можно фильтровать одновременно и« foo », и« bar ») время). Это сообщение не обязательно совпадает с сообщением фиксации SVN, которое, вероятно, содержит гораздо больше внутренней информации.

Такие вещи, как метрики кода, проверка стиля кода и т. Д., Сейчас не являются моей основной задачей, но в конечном итоге они, безусловно, будут. Решения, которые приносят это из коробки, очень любезны.

я ищу

Отзывы и опыт от людей, которые находятся или были в аналогичной ситуации, и успешно внедрили решение для этого

Особенно,хорошие пошаговые руководства и пошаговые руководства о том, как настроить это

Решения, которые обеспечиваюткак можно больше автоматизацииНапример, создавая скелет API, контрольные примеры и так далее для каждого нового проекта.

а также

Рекомендации по продукту, Что я знаю до сих порPhing/ муравей для строительства, иphpUnderControl или жеГудзон для отчетной части. Я люблю их всех, насколько я вижу, но у меня, конечно, нет подробного опыта с ними.

язаболоченный с работой, поэтому у меня есть сильная склонность к простым решениям. С другой стороны, если функция отсутствует, я заплачу, что она слишком ограничена. :) Приветствуются и решения типа «укажи и щелкни». Я также к коммерческим рекомендациям продукта, которые могут работать с проектами PHP.

Моя настройка

Я работаю в Windows локально (точнее 7), и большинство клиентских проектов выполняются в стеке LAMP, часто на разделяемом хостинге (= без удаленного SSH). Я ищу решения, которые я могу использовать в своей среде. Я готов настроить виртуальную машину Linux для этого, никаких проблем. Размещенные решения интересны для меня только в том случае, если они обеспечивают все описанные аспекты или достаточно гибки для взаимодействия с другими частями процесса.

премия Я принимаю ответ, который, как мне кажется, даст мне больше всего пробега. Здесь есть много отличных отзывов, я хотел бы принять более одного ответа. Спасибо всем!

Ответы на вопрос(9)

Ваш ответ на вопрос