590 likes | 702 Views
Непрерывная интеграция для PHP. PROJECT UNDER CONTROL. Александр Симанович. Регламент. Обо мне. Руководитель группы разработчиков MTV Entertainment в EPAM Systems PHP Skill Manager в EPAM Systems. Исходный код. http://tiny.cc/2ws8ew. Введение в непрерывную интеграцию.
E N D
Непрерывная интеграция для PHP PROJECT UNDER CONTROL Александр Симанович
Обо мне • Руководитель группы разработчиковMTV Entertainment в EPAM Systems • PHP Skill Manager в EPAM Systems
Исходный код http://tiny.cc/2ws8ew
Введение в непрерывную интеграцию
Исходные данные • Проект (> 1года) • Команда (5-9 человек) • Итеративный процесс (демо) • LAMP • Zend Framework
Потенциальные риски и проблемы • Долгий процесс интеграции • Актуальность базы данных • Стандарты кодирования • Copy/Pasting • Сложность кода • Новый человек в проекте
Качество • Тестирование • Рефакторинг • Стандарты кодирования • Частые релизы
Цели CI • Уменьшение количества повторяемых процессов • Снижение рисков • Возможность быстрого построения ПО • Обеспечение лучшего контроля проекта • Повышение доверия к ПО
Процессы CI • Компиляция исходного кода • Проверка • Инспекция • Интеграция базы данных • Развертывание • Документирование • Обратная связь
Build для PHP • Очистка окружения • Загружаем код из репозитория • Запуск тестов, анализ кода • Генерация документации (API) • Развертывание приложения • Интеграция базы данных
Почему Phing? • Сделан для PHP, написан на PHP • XML build файлы • Кросс платформенный • Большой выбор готовых тасков • Расширяемый
Сервера CI • Jenkins/Hudson • CruiseControl/phpUnderControl • Bamboo отAtlassian • TeamCityотJetBrains • Travis
Почему Jenkins? • Репозиторий плагинов (более 400) • Сообщество контрибьюторов • Open source • Кроссплатформенность • Web интерфейс • Простота использования • API
Тесты и инструменты • Ручное тестирование • Unit tests • Acceptance (End-to-End) tests • Integration tests
Инспекция • Снижаем сложность кода • Поддерживаем стандартыкода • Следим за дублированным кодом • Оцениваем покрытие кода тестами
Lint php –l index.php
Рекомендации • В любое время, в любом месте • Маркируем каждое построение • Запускаем все проверки • Обеспечиваем возможность отката
Правильная информация • Состояние построения • Результаты проверки • Отчеты об инспекции
Правильный способ • Email • SMS • Jabber • Skype • Twitter • Расширение для браузера • Popup • IDE • X10 • Телевизор • Звук • Шар рассеянного света
Правильное время • Когда случается проблема • Каждый час • Каждый день • Каждую неделю • Каждый релиз
Правильные люди • Заказчик • Руководитель проекта • Интегратор • Технический руководитель • Бизнес-аналитик • Разработчик • Тестеровщик
Примеры • On commit • Покоммиту • Информация команде • Выполняется быстро • Nightly • Раз в день, ночью • Информация команде, тех. лиду, менеджеру • Выполняется долго (инспекция)
Результат по целям CI • Уменьшение количества повторяемых процессов • Снижение рисков • Возможность быстрого построения ПО • Обеспечение лучшего контроля проекта • Повышение доверия к ПО
Результат по рискам • Долгий процесс интеграции • Актуальность базы данных • Стандарты кодирования • Copy/Pasting • Сложность кода • Новый человек в проекте