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

PROJECT UNDER CONTROL

  • 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

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

Вопросы