Я большую часть своего времени являюсь разработчиком-одиночкой, работаю над рядом крупных, в основном, проектов на основе PHP. Я хочу профессионализировать и автоматизировать, как обрабатываются изменения в кодовой базе, и создать процесс непрерывной интеграции, который делает возможным переход к работе в команде без внесения фундаментальных изменений.
Сейчас я занимаюсь тем, что у меня есть локальная тестовая среда для каждого проекта; Я использую SVN для каждого проекта; Изменения тестируются локально, а затем передаются в онлайн-версию, обычно через FTP. API документация генерируется вручную из исходного кода; Модульные тесты - это то, чем я занимаюсь медленно, и это еще не часть моей повседневной жизни.
«Цикл сборки», который я предполагаю, будет делать следующее:
Набор изменений проверяется в SVN после локального тестирования.
Я запускаю процесс сборки. Редакция SVN HEAD проверяется, модифицируется при необходимости и готовится к загрузке.
Документация API генерируется автоматически - если я еще не настроил ее подробно, используя шаблон по умолчанию, сканирую всю базу кода.
Новая ревизия развернута в удаленном местоположении по FTP (включая переименование некоторых каталогов, chmodding, импорт баз данных и тому подобное.) Это то, что мне уже очень нравится phing очень но я, конечно, открыт для альтернатив.
Выполняются модульные тесты, расположенные в предопределенном месте. Мне сообщили об их неудаче или успехе с использованием электронной почты, RSS или (предпочтительно) вывода HTML, которые я могу взять и поместить на веб-страницу.
(опционально) текстовый файл «changelog» для конечного пользователя в предопределенном месте обновляется с помощью предопределенной части сообщения фиксации («Теперь можно фильтровать как« foo », так и« foo »). "bar" одновременно). Это сообщение не обязательно совпадает с сообщением фиксации SVN, которое, вероятно, содержит гораздо больше внутренней информации.
Такие вещи, как метрики кода, проверка стиля кода и так далее, не являются моей основной задачей сейчас, но в долгосрочной перспективе они, безусловно, будут. Решения, которые выводят это из коробки, очень любезны.
Я ищу
Отзывы и опыт от людей, которые находятся или находились в аналогичной ситуации и успешно внедрили решение для этого
Особенно, хорошие пошаговые руководства и пошаговые руководства о том, как это настроить
Решения, обеспечивающие максимально возможной автоматизации , например, путем создания скелетного API, тестовых случаев и т. Д. Для каждого нового проекта.
, а также
- Рекомендации по применению . На данный момент я знаю, что phing / ant для сборки и phpUnderControl или Hudson для отчетной части. Я люблю их всех, насколько я вижу, но у меня, конечно, нет подробного опыта с ними.
Я завален работой, поэтому у меня есть сильная склонность к простым решениям. С другой стороны, если функция отсутствует, я заплачу, что она слишком ограничена. :) Приветствуются и решения типа «укажи и щелкни». Я также обращаюсь к рекомендациям коммерческого продукта, которые могут работать с проектами PHP.
Моя настройка
Я работаю в Windows локально (точнее, 7), и большинство клиентских проектов выполняются в стеке LAMP, часто на разделяемом хостинге (= без удаленного SSH).
Я ищу решения, которые я могу использовать в своей среде. Я готов настроить виртуальную машину Linux для этого, никаких проблем. Размещенные решения интересны для меня только в том случае, если они обеспечивают все описанные аспекты или являются достаточно гибкими для взаимодействия с другими частями процесса.
Bounty Я принимаю ответ, который, как мне кажется, даст мне больше всего пробега. Здесь есть много отличных отзывов, я хотел бы принять более одного ответа. Спасибо всем!