Непрерывная интеграция для 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  Popup  SMS  IDE  Jabber  X10  Skype  Телевизор  Twitter  Звук  Расширение для  Шар рассеянного браузера света
 Когда случается проблема  Каждый час  Каждый день  Каждую неделю  Каждый релиз
 Заказчик  Руководитель проекта  Интегратор  Технический руководитель  Бизнес-аналитик  Разработчик  Тестеровщик
 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 • Twitter: @simanjan • Blog: simanovich.info
Project under control

Project under control

  • 1.
    Непрерывная интеграция дляPHP Александр Симанович
  • 3.
    Руководитель группы разработчиков MTV Entertainment в EPAM Systems  PHP Skill Manager в EPAM Systems
  • 4.
  • 6.
    Проект (> 1 года)  Команда (5-9 человек)  Итеративный процесс (демо)  LAMP  Zend Framework
  • 7.
    Долгий процесс интеграции  Актуальность базы данных  Стандарты кодирования  Copy/Pasting  Сложность кода  Новый человек в проекте
  • 8.
    Тестирование  Рефакторинг  Стандарты кодирования  Частые релизы
  • 9.
    Уменьшение количества повторяемых процессов  Снижение рисков  Возможность быстрого построения ПО  Обеспечение лучшего контроля проекта  Повышение доверия к ПО
  • 10.
    Компиляция исходного кода  Проверка  Инспекция  Интеграция базы данных  Развертывание  Документирование  Обратная связь
  • 13.
    Очистка окружения  Загружаем код из репозитория  Запуск тестов, анализ кода  Генерация документации (API)  Подключение библиотек и фреймворка  Развертывание приложения и базы данных
  • 14.
    Сделан для PHP, написан на PHP  XML build файлы  Кросс платформенный  Большой выбор готовых тасков  Расширяемый
  • 15.
    Project Target Task
  • 18.
    Jenkins/Hudson  CruiseControl/phpUnderControl  Bamboo от Atlassian  TeamCity от JetBrains  Travis
  • 19.
    Репозиторий плагинов (более 400)  Сообщество контрибьюторов  Open source  Кроссплатформенность  Web интерфейс  Простота использования  API
  • 22.
    Ручное тестирование  Unit tests  Acceptance (End-to-End) tests  Integration tests
  • 25.
    Снижаем сложность кода  Поддерживаем стандарты кода  Следим за дублированным кодом  Оцениваем покрытие кода тестами
  • 27.
  • 35.
    В любое время, в любом месте  Маркируем каждое построение  Запускаем все проверки  Обеспечиваем возможность отката
  • 38.
    Состояние построения  Результаты проверки  Отчеты об инспекции
  • 40.
    Email  Popup  SMS  IDE  Jabber  X10  Skype  Телевизор  Twitter  Звук  Расширение для  Шар рассеянного браузера света
  • 41.
    Когда случается проблема  Каждый час  Каждый день  Каждую неделю  Каждый релиз
  • 42.
    Заказчик  Руководитель проекта  Интегратор  Технический руководитель  Бизнес-аналитик  Разработчик  Тестеровщик
  • 43.
    On commit  По коммиту  Информация команде  Выполняется быстро  Nightly  Раз в день, ночью  Информация команде, тех. лиду, менеджеру  Выполняется долго (инспекция)
  • 45.
    Уменьшение количества повторяемых процессов  Снижение рисков  Возможность быстрого построения ПО  Обеспечение лучшего контроля проекта  Повышение доверия к ПО
  • 46.
    Долгий процесс интеграции  Актуальность базы данных  Стандарты кодирования  Copy/Pasting  Сложность кода  Новый человек в проекте
  • 47.
    Передавайте код часто  Ликвидируйте проблемы незамедлительно  Пишите автоматизированные проверки  Все проверки должны быть пройдены  Выполняйте закрытое построение
  • 49.
    Затраты на поддержку CI  Изменения процессов  Слишком много неудачных построений  Издержки на ПО и «железо»
  • 50.
    Инструменты не решатваши проблемы Вам нужна культура!
  • 52.
    Facebook делает паблишкода каждый день… Автоматически http://tiny.cc/ngs8ew
  • 53.
    • Непрерывная Интеграция– Поль М. Дюваль • Integrating PHP Projects with Jenkins – Sebastian Bergmann • Growing Object-Oriented Software, Guided by Tests – Steve Freeman, Net Price
  • 54.
    Email: as@extrascript.com • Skype: aliaksandr.simanovich • Twitter: @simanjan • Blog: simanovich.info