PROJECT UNDER CONTROL
description
Transcript of PROJECT UNDER CONTROL
![Page 1: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/1.jpg)
PROJECT UNDER CONTROL
Непрерывная интеграция для PHP
Александр Симанович
![Page 2: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/2.jpg)
Регламент
![Page 3: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/3.jpg)
Обо мне
Руководитель группы разработчиковMTV Entertainment в EPAM Systems
PHP Skill Manager в EPAM Systems
![Page 5: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/5.jpg)
Введение в непрерывную интеграцию
![Page 6: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/6.jpg)
Исходные данные
Проект (> 1 года) Команда (5-9 человек) Итеративный процесс (демо) LAMP Zend Framework
![Page 7: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/7.jpg)
Потенциальные риски и проблемы
Долгий процесс интеграции Актуальность базы данных Стандарты кодирования Copy/Pasting Сложность кода Новый человек в проекте
![Page 8: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/8.jpg)
Качество
Тестирование Рефакторинг Стандарты кодирования Частые релизы
![Page 9: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/9.jpg)
Цели CI
Уменьшение количества повторяемых процессов
Снижение рисков Возможность быстрого
построения ПО Обеспечение лучшего контроля
проекта Повышение доверия к ПО
![Page 10: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/10.jpg)
Процессы CI
Компиляция исходного кода Проверка Инспекция Интеграция базы данных Развертывание Документирование Обратная связь
![Page 11: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/11.jpg)
Системы контроля версий
![Page 12: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/12.jpg)
Build инструменты
![Page 13: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/13.jpg)
Build для PHP
Очистка окружения Загружаем код из репозитория Запуск тестов, анализ кода Генерация документации (API) Развертывание приложения Интеграция базы данных
![Page 14: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/14.jpg)
Почему Phing?
Сделан для PHP, написан на PHP XML build файлы Кросс платформенный Большой выбор готовых тасков Расширяемый
![Page 15: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/15.jpg)
Основы Phing
Project
Target Task
![Page 16: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/16.jpg)
Локальный build
![Page 17: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/17.jpg)
Сервер непрерывной интеграции
![Page 18: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/18.jpg)
Сервера CI
Jenkins/Hudson CruiseControl/phpUnderControl Bamboo от Atlassian TeamCity от JetBrains Travis
![Page 19: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/19.jpg)
Почему Jenkins?
Репозиторий плагинов (более 400) Сообщество контрибьюторов Open source Кроссплатформенность Web интерфейс Простота использования API
![Page 20: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/20.jpg)
Chuck Norris CAN divide by 0
![Page 21: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/21.jpg)
Непрерывная проверка
![Page 22: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/22.jpg)
Тесты и инструменты
Ручное тестирование Unit tests Acceptance (End-to-End) tests Integration tests
![Page 23: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/23.jpg)
Test Results
![Page 24: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/24.jpg)
Непрерывная инспекция
![Page 25: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/25.jpg)
Инспекция
Снижаем сложность кода Поддерживаем стандарты кода Следим за дублированным кодом Оцениваем покрытие кода
тестами
![Page 26: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/26.jpg)
PHP_CodeCoverage
![Page 27: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/27.jpg)
Lint
php –l index.php
![Page 28: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/28.jpg)
PHP_CodeSniffer
![Page 29: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/29.jpg)
phploc
![Page 30: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/30.jpg)
PHP Copy/Paste Detector
![Page 31: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/31.jpg)
PHP_Depend
![Page 32: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/32.jpg)
PHP Mess Detector
![Page 33: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/33.jpg)
Создание документации
![Page 34: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/34.jpg)
Php Documentor 2
![Page 35: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/35.jpg)
PHP Code Browser
![Page 36: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/36.jpg)
Интеграция БД - DbDeploy
![Page 37: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/37.jpg)
Непрерывное развертывание
![Page 38: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/38.jpg)
Рекомендации
В любое время, в любом месте Маркируем каждое построение Запускаем все проверки Обеспечиваем возможность
отката
![Page 39: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/39.jpg)
CI Jobs
![Page 40: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/40.jpg)
Непрерывная обратная связь
![Page 41: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/41.jpg)
Правильная информация
Состояние построения Результаты проверки Отчеты об инспекции
![Page 42: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/42.jpg)
Правильный способ
![Page 43: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/43.jpg)
Правильный способ
Email SMS Jabber Skype Twitter Расширение для
браузера
Popup IDE X10 Телевизор Звук Шар рассеянного
света
![Page 44: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/44.jpg)
Наш вариант
![Page 45: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/45.jpg)
Правильное время
Когда случается проблема Каждый час Каждый день Каждую неделю Каждый релиз
![Page 46: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/46.jpg)
Правильные люди
Заказчик Руководитель проекта Интегратор Технический руководитель Бизнес-аналитик Разработчик Тестеровщик
![Page 47: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/47.jpg)
Примеры
On commit По коммиту Информация команде Выполняется быстро
Nightly Раз в день, ночью Информация команде, тех. лиду,
менеджеру Выполняется долго (инспекция)
![Page 48: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/48.jpg)
Результат
![Page 49: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/49.jpg)
Результат по целям CI
Уменьшение количества повторяемых процессов
Снижение рисков Возможность быстрого
построения ПО Обеспечение лучшего контроля
проекта Повышение доверия к ПО
![Page 50: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/50.jpg)
Результат по рискам
Долгий процесс интеграции Актуальность базы данных Стандарты кодирования Copy/Pasting Сложность кода Новый человек в проекте
![Page 51: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/51.jpg)
Рекомендации
Передавайте код часто Ликвидируйте проблемы
незамедлительно Пишите автоматизированные
проверки Все проверки должны быть
пройдены Выполняйте закрытое построение
![Page 52: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/52.jpg)
Человеческий фактор
![Page 53: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/53.jpg)
Легенды и мифы
Затраты на поддержку CI Изменения процессов Слишком много неудачных
построений Издержки на ПО и «железо»
![Page 54: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/54.jpg)
Культура и Инструменты
Инструменты не решат ваши проблемы
Вам нужна культура!
![Page 55: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/55.jpg)
История успеха
![Page 56: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/56.jpg)
Facebook делает паблиш кода каждый день…
Автоматически
http://tiny.cc/ngs8ew
![Page 57: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/57.jpg)
Ресурсы и литература
• Непрерывная Интеграция – Поль М. Дюваль
• Integrating PHP Projects with Jenkins – Sebastian Bergmann
• Growing Object-Oriented Software, Guided by Tests – Steve Freeman, Net Price
![Page 58: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/58.jpg)
Контакты
• Email: [email protected]• Skype: aliaksandr.simanovich• facebook.com/alex.simanovich• Twitter: @simanjan• Blog: simanovich.info
![Page 59: PROJECT UNDER CONTROL](https://reader035.fdocument.pub/reader035/viewer/2022062808/5681531d550346895dc14165/html5/thumbnails/59.jpg)
Вопросы