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