PROJECT UNDER CONTROL

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

description

Непрерывная интеграция для PHP. PROJECT UNDER CONTROL. Александр Симанович. Регламент. Обо мне. Руководитель группы разработчиков MTV Entertainment в EPAM Systems PHP Skill Manager в EPAM Systems. Исходный код. http://tiny.cc/2ws8ew. Введение в непрерывную интеграцию. - PowerPoint PPT Presentation

Transcript of PROJECT UNDER CONTROL

Page 1: PROJECT UNDER CONTROL

PROJECT UNDER CONTROL

Непрерывная интеграция для PHP

Александр Симанович

Page 2: PROJECT UNDER CONTROL

Регламент

Page 3: PROJECT UNDER CONTROL

Обо мне

Руководитель группы разработчиковMTV Entertainment в EPAM Systems

PHP Skill Manager в EPAM Systems

Page 4: PROJECT UNDER CONTROL

Исходный код

http://tiny.cc/2ws8ew

Page 5: PROJECT UNDER CONTROL

Введение в непрерывную интеграцию

Page 6: PROJECT UNDER CONTROL

Исходные данные

Проект (> 1 года) Команда (5-9 человек) Итеративный процесс (демо) LAMP Zend Framework

Page 7: PROJECT UNDER CONTROL

Потенциальные риски и проблемы

Долгий процесс интеграции Актуальность базы данных Стандарты кодирования Copy/Pasting Сложность кода Новый человек в проекте

Page 8: PROJECT UNDER CONTROL

Качество

Тестирование Рефакторинг Стандарты кодирования Частые релизы

Page 9: PROJECT UNDER CONTROL

Цели CI

Уменьшение количества повторяемых процессов

Снижение рисков Возможность быстрого

построения ПО Обеспечение лучшего контроля

проекта Повышение доверия к ПО

Page 10: PROJECT UNDER CONTROL

Процессы CI

Компиляция исходного кода Проверка Инспекция Интеграция базы данных Развертывание Документирование Обратная связь

Page 11: PROJECT UNDER CONTROL

Системы контроля версий

Page 12: PROJECT UNDER CONTROL

Build инструменты

Page 13: PROJECT UNDER CONTROL

Build для PHP

Очистка окружения Загружаем код из репозитория Запуск тестов, анализ кода Генерация документации (API) Развертывание приложения Интеграция базы данных

Page 14: PROJECT UNDER CONTROL

Почему Phing?

Сделан для PHP, написан на PHP XML build файлы Кросс платформенный Большой выбор готовых тасков Расширяемый

Page 15: PROJECT UNDER CONTROL

Основы Phing

Project

Target Task

Page 16: PROJECT UNDER CONTROL

Локальный build

Page 17: PROJECT UNDER CONTROL

Сервер непрерывной интеграции

Page 18: PROJECT UNDER CONTROL

Сервера CI

Jenkins/Hudson CruiseControl/phpUnderControl Bamboo от Atlassian TeamCity от JetBrains Travis

Page 19: PROJECT UNDER CONTROL

Почему Jenkins?

Репозиторий плагинов (более 400) Сообщество контрибьюторов Open source Кроссплатформенность Web интерфейс Простота использования API

Page 20: PROJECT UNDER CONTROL

Chuck Norris CAN divide by 0

Page 21: PROJECT UNDER CONTROL

Непрерывная проверка

Page 22: PROJECT UNDER CONTROL

Тесты и инструменты

Ручное тестирование Unit tests Acceptance (End-to-End) tests Integration tests

Page 23: PROJECT UNDER CONTROL

Test Results

Page 24: PROJECT UNDER CONTROL

Непрерывная инспекция

Page 25: PROJECT UNDER CONTROL

Инспекция

Снижаем сложность кода Поддерживаем стандарты кода Следим за дублированным кодом Оцениваем покрытие кода

тестами

Page 26: PROJECT UNDER CONTROL

PHP_CodeCoverage

Page 27: PROJECT UNDER CONTROL

Lint

php –l index.php

Page 28: PROJECT UNDER CONTROL

PHP_CodeSniffer

Page 29: PROJECT UNDER CONTROL

phploc

Page 30: PROJECT UNDER CONTROL

PHP Copy/Paste Detector

Page 31: PROJECT UNDER CONTROL

PHP_Depend

Page 32: PROJECT UNDER CONTROL

PHP Mess Detector

Page 33: PROJECT UNDER CONTROL

Создание документации

Page 34: PROJECT UNDER CONTROL

Php Documentor 2

Page 35: PROJECT UNDER CONTROL

PHP Code Browser

Page 36: PROJECT UNDER CONTROL

Интеграция БД - DbDeploy

Page 37: PROJECT UNDER CONTROL

Непрерывное развертывание

Page 38: PROJECT UNDER CONTROL

Рекомендации

В любое время, в любом месте Маркируем каждое построение Запускаем все проверки Обеспечиваем возможность

отката

Page 39: PROJECT UNDER CONTROL

CI Jobs

Page 40: PROJECT UNDER CONTROL

Непрерывная обратная связь

Page 41: PROJECT UNDER CONTROL

Правильная информация

Состояние построения Результаты проверки Отчеты об инспекции

Page 42: PROJECT UNDER CONTROL

Правильный способ

Page 43: PROJECT UNDER CONTROL

Правильный способ

Email SMS Jabber Skype Twitter Расширение для

браузера

Popup IDE X10 Телевизор Звук Шар рассеянного

света

Page 44: PROJECT UNDER CONTROL

Наш вариант

Page 45: PROJECT UNDER CONTROL

Правильное время

Когда случается проблема Каждый час Каждый день Каждую неделю Каждый релиз

Page 46: PROJECT UNDER CONTROL

Правильные люди

Заказчик Руководитель проекта Интегратор Технический руководитель Бизнес-аналитик Разработчик Тестеровщик

Page 47: PROJECT UNDER CONTROL

Примеры

On commit По коммиту Информация команде Выполняется быстро

Nightly Раз в день, ночью Информация команде, тех. лиду,

менеджеру Выполняется долго (инспекция)

Page 48: PROJECT UNDER CONTROL

Результат

Page 49: PROJECT UNDER CONTROL

Результат по целям CI

Уменьшение количества повторяемых процессов

Снижение рисков Возможность быстрого

построения ПО Обеспечение лучшего контроля

проекта Повышение доверия к ПО

Page 50: PROJECT UNDER CONTROL

Результат по рискам

Долгий процесс интеграции Актуальность базы данных Стандарты кодирования Copy/Pasting Сложность кода Новый человек в проекте

Page 51: PROJECT UNDER CONTROL

Рекомендации

Передавайте код часто Ликвидируйте проблемы

незамедлительно Пишите автоматизированные

проверки Все проверки должны быть

пройдены Выполняйте закрытое построение

Page 52: PROJECT UNDER CONTROL

Человеческий фактор

Page 53: PROJECT UNDER CONTROL

Легенды и мифы

Затраты на поддержку CI Изменения процессов Слишком много неудачных

построений Издержки на ПО и «железо»

Page 54: PROJECT UNDER CONTROL

Культура и Инструменты

Инструменты не решат ваши проблемы

Вам нужна культура!

Page 55: PROJECT UNDER CONTROL

История успеха

Page 56: PROJECT UNDER CONTROL

Facebook

Facebook делает паблиш кода каждый день…

Автоматически

http://tiny.cc/ngs8ew

Page 57: PROJECT UNDER CONTROL

Ресурсы и литература

• Непрерывная Интеграция – Поль М. Дюваль

• Integrating PHP Projects with Jenkins – Sebastian Bergmann

• Growing Object-Oriented Software, Guided by Tests – Steve Freeman, Net Price

Page 58: PROJECT UNDER CONTROL

Контакты

• Email: [email protected]• Skype: aliaksandr.simanovich• facebook.com/alex.simanovich• Twitter: @simanjan• Blog: simanovich.info

Page 59: PROJECT UNDER CONTROL

Вопросы