PROJECT UNDER CONTROL

Preview:

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

Исходный код

http://tiny.cc/2ws8ew

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

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

Проект (> 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

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

Вопросы

Recommended