Upload
dandre
View
33
Download
2
Embed Size (px)
DESCRIPTION
Непрерывная интеграция для PHP. PROJECT UNDER CONTROL. Александр Симанович. Регламент. Обо мне. Руководитель группы разработчиков MTV Entertainment в EPAM Systems PHP Skill Manager в EPAM Systems. Исходный код. http://tiny.cc/2ws8ew. Введение в непрерывную интеграцию. - PowerPoint PPT Presentation
Citation preview
PROJECT UNDER CONTROL
Непрерывная интеграция для PHP
Александр Симанович
Регламент
Обо мне
Руководитель группы разработчиковMTV Entertainment в EPAM Systems
PHP Skill Manager в EPAM Systems
Введение в непрерывную интеграцию
Исходные данные
Проект (> 1 года) Команда (5-9 человек) Итеративный процесс (демо) LAMP Zend Framework
Потенциальные риски и проблемы
Долгий процесс интеграции Актуальность базы данных Стандарты кодирования Copy/Pasting Сложность кода Новый человек в проекте
Качество
Тестирование Рефакторинг Стандарты кодирования Частые релизы
Цели CI
Уменьшение количества повторяемых процессов
Снижение рисков Возможность быстрого
построения ПО Обеспечение лучшего контроля
проекта Повышение доверия к ПО
Процессы CI
Компиляция исходного кода Проверка Инспекция Интеграция базы данных Развертывание Документирование Обратная связь
Системы контроля версий
Build инструменты
Build для PHP
Очистка окружения Загружаем код из репозитория Запуск тестов, анализ кода Генерация документации (API) Развертывание приложения Интеграция базы данных
Почему Phing?
Сделан для PHP, написан на PHP XML build файлы Кросс платформенный Большой выбор готовых тасков Расширяемый
Основы Phing
Project
Target Task
Локальный build
Сервер непрерывной интеграции
Сервера CI
Jenkins/Hudson CruiseControl/phpUnderControl Bamboo от Atlassian TeamCity от JetBrains Travis
Почему Jenkins?
Репозиторий плагинов (более 400) Сообщество контрибьюторов Open source Кроссплатформенность Web интерфейс Простота использования API
Chuck Norris CAN divide by 0
Непрерывная проверка
Тесты и инструменты
Ручное тестирование Unit tests Acceptance (End-to-End) tests Integration tests
Test Results
Непрерывная инспекция
Инспекция
Снижаем сложность кода Поддерживаем стандарты кода Следим за дублированным кодом Оцениваем покрытие кода
тестами
PHP_CodeCoverage
Lint
php –l index.php
PHP_CodeSniffer
phploc
PHP Copy/Paste Detector
PHP_Depend
PHP Mess Detector
Создание документации
Php Documentor 2
PHP Code Browser
Интеграция БД - DbDeploy
Непрерывное развертывание
Рекомендации
В любое время, в любом месте Маркируем каждое построение Запускаем все проверки Обеспечиваем возможность
отката
CI Jobs
Непрерывная обратная связь
Правильная информация
Состояние построения Результаты проверки Отчеты об инспекции
Правильный способ
Правильный способ
Email SMS Jabber Skype Twitter Расширение для
браузера
Popup IDE X10 Телевизор Звук Шар рассеянного
света
Наш вариант
Правильное время
Когда случается проблема Каждый час Каждый день Каждую неделю Каждый релиз
Правильные люди
Заказчик Руководитель проекта Интегратор Технический руководитель Бизнес-аналитик Разработчик Тестеровщик
Примеры
On commit По коммиту Информация команде Выполняется быстро
Nightly Раз в день, ночью Информация команде, тех. лиду,
менеджеру Выполняется долго (инспекция)
Результат
Результат по целям CI
Уменьшение количества повторяемых процессов
Снижение рисков Возможность быстрого
построения ПО Обеспечение лучшего контроля
проекта Повышение доверия к ПО
Результат по рискам
Долгий процесс интеграции Актуальность базы данных Стандарты кодирования 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
Вопросы