Непрерывная интеграция для PHP Александр Симанович Руководитель группы разработчиков MTV Entertainment в EPAM Systems PHP Skill Manager в EPAM Systems http://tiny.cc/2ws8ew Проект (> 1 года) Команда (5-9 человек) Итеративный процесс (демо) LAMP Zend Framework Долгий процесс интеграции Актуальность базы данных Стандарты кодирования Copy/Pasting Сложность кода Новый человек в проекте Тестирование Рефакторинг Стандарты кодирования Частые релизы Уменьшение количества повторяемых процессов Снижение рисков Возможность быстрого построения ПО Обеспечение лучшего контроля проекта Повышение доверия к ПО Компиляция исходного кода Проверка Инспекция Интеграция базы данных Развертывание Документирование Обратная связь Очистка окружения Загружаем код из репозитория Запуск тестов, анализ кода Генерация документации (API) Развертывание приложения Интеграция базы данных Сделан для PHP, написан на PHP XML build файлы Кросс платформенный Большой выбор готовых тасков Расширяемый Project Target Task Jenkins/Hudson CruiseControl/phpUnderControl Bamboo от Atlassian TeamCity от JetBrains Travis Репозиторий плагинов (более 400) Сообщество контрибьюторов Open source Кроссплатформенность Web интерфейс Простота использования API Ручное тестирование Unit tests Acceptance (End-to-End) tests Integration tests Снижаем сложность кода Поддерживаем стандарты кода Следим за дублированным кодом Оцениваем покрытие кода тестами php –l index.php В любое время, в любом месте Маркируем каждое построение Запускаем все проверки Обеспечиваем возможность отката Состояние построения Результаты проверки Отчеты об инспекции Email SMS Jabber Skype Twitter Расширение для браузера Popup IDE X10 Телевизор Звук Шар рассеянного света Когда случается проблема Каждый час Каждый день Каждую неделю Каждый релиз Заказчик Руководитель проекта Интегратор Технический руководитель Бизнес-аналитик Разработчик Тестеровщик On commit По коммиту Информация команде Выполняется быстро Nightly Раз в день, ночью Информация команде, тех. лиду, менеджеру Выполняется долго (инспекция) Уменьшение количества повторяемых процессов Снижение рисков Возможность быстрого построения ПО Обеспечение лучшего контроля проекта Повышение доверия к ПО Долгий процесс интеграции Актуальность базы данных Стандарты кодирования Copy/Pasting Сложность кода Новый человек в проекте Передавайте код часто Ликвидируйте проблемы незамедлительно Пишите автоматизированные проверки Все проверки должны быть пройдены Выполняйте закрытое построение Затраты на поддержку CI Изменения процессов Слишком много неудачных построений Издержки на ПО и «железо» Инструменты не решат ваши проблемы Вам нужна культура! Facebook делает паблиш кода каждый день… Автоматически http://tiny.cc/ngs8ew • Непрерывная Интеграция – Поль М. Дюваль • Integrating PHP Projects with Jenkins – Sebastian Bergmann • Growing Object-Oriented Software, Guided by Tests – Steve Freeman, Net Price • • • • • Email: [email protected] Skype: aliaksandr.simanovich facebook.com/alex.simanovich Twitter: @simanjan Blog: simanovich.info