Александр Симанович Непрерывная интеграция для PHP

advertisement
Непрерывная интеграция для 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: as@extrascript.com
Skype: aliaksandr.simanovich
facebook.com/alex.simanovich
Twitter: @simanjan
Blog: simanovich.info
Download