510 likes | 805 Views
Организация командной разработки с использованием D7. Александр Сербул Руководитель направления контроля качества интеграции и внедрений 1С-Битрикс. О чем поговорим. Что такое «персональная» и «командная разработка». Зачем все усложнять? О пользе инструментов, посчитаем деньги
E N D
Организация командной разработкис использованием D7 Александр Сербул Руководитель направленияконтроля качества интеграции и внедрений 1С-Битрикс
О чем поговорим • Что такое «персональная» и «командная разработка». Зачем все усложнять? • О пользе инструментов, посчитаем деньги • О подводных камнях • Научимся грамотно организовывать процесс для любого проекта
Программа минимум • Скачиваем демоверсию • Проект интегрирует один человек где и как ему удобно • Создаем архив файлов и БД • Выгружаем архив на хостинг клиента • Задача – выполнена!
Спасибо за внимание! Вопросы?
Программа минимум - издержки • Контроль версий – быстрый откат, восстановление файла • Подсветка кода – резко снижает число ошибок • Подсказки параметров функций/методов • Встроенная справка по PHP • Дерево проекта, классов • Codestyle • Встроенная работа с удаленными серверами • Время – деньги!
Среда разработки – must have • Использовать – современные инструменты IDE (IntegratedDevelopmentEnvironment) • Выберите полезный IDE, изучите и внедрите
IDE – продайте себе и клиенту • Себе – код стоит денег, пишется один раз, поддерживается долго • Себе – скорость разработки и поддержки, меньше ошибок, более качественный продукт на выходе • Себе – мотивация программистов, обучение, новые горизонты • Клиенту – скорость разработки • Клиенту – стабилизация решения идет быстрее
PhpStorm + ООП Подсказки по PHP и вашим функциям/классам, подсветка ошибок
PhpStorm Встроенный help по PHP – немного корявый, но работает (Ctrl + B)
PhpStorm + ООП Подсказки структуры классов
PhpStorm + ООП Структура сущностей, теги PhpDocumentor
PhpStorm + ООП Связь с удаленными серверами, контроль версий
IDE – платные и бесплатные • С платными – «проще» на крупных проектах, средних/больших командах • Платные – «проще» настраивать • Отладка, профилировка, контроль версий • «Скупой - платит дважды» • Выбор – есть
Отладка • echo, die – популярно , но медленно и чревато ошибками • Xdebug – уже установлен в виртуальной машине Bitrix • Настраиваем Xdebug на сервере:
Отладка • Устанавливаем breakpoints в скрипте • Начинаем сессию отладки (руками или плагином)
Отладка • Отслеживаем значения переменных «в памяти» • Меняем значения переменных, добавляем watches и т.п.
Отладка • Плагины Xdebug для браузеров • Ничего нового, но удобнее, чем вводить ручками
Контроль версий • Код – под контролем, можно откатиться • Видно, что и когда делал • Легче добавлять функционал, экспериментировать • Можно добавлять в VCS – компоненты, шаблоны, модули
Особенности • Не добавляйте Битрикс в контроль версий! • Используйте IDE для своего репозитория, модулей • Обновляйте Битрикс – отдельно, как «библиотеку» • Для контента и файлов прав – делаем инкрементальный бэкап
Особенности • В Битрикс – МНОООГО кода и файлов! • Добавим исходники linux в svn? ;-) • IDE и индексация файлов • Подсветка классов и функций Битрикс vs online help • Где разрабатывать – windows, linux, виртуалки, серверы …
Битрикс и IDE. «Персональный сервер разработчика» Персональный сервер разработчика(Windows, Linux) • Самая быстрая индексация кода как веб-проекта, так и ядра Битрикс • Автоматический «деплой» на веб-сервер Среда выполнения (apache, php-fpm) Проект IDE Контроль версий Код веб-проекта Ядро Битрикс БД
Удаленный сервер разработчика(Windows, Linux) Среда выполнения (apache, php-fpm) Рабочее место разработчика(Windows, Linux) Проект IDE Контроль версий Код веб-проекта Код веб-проекта Ядро Битрикс Ядро Битрикс ftp, sftp БД • Медленное обновление локального ядра Битрикс для подсветки • Тормоза при индексациях по сети Битрикс и IDE. «Удаленный сервер разработчика – локальные файлы проекта»
Удаленный сервер разработчика(Windows, Linux) Среда выполнения (apache, php-fpm) Рабочее место разработчика(Windows, Linux) Проект IDE Контроль версий Код веб-проекта Ядро Битрикс ftp, ssh, shared disk БД • Тормоза при индексациях по сети Битрикс и IDE. «Удаленный сервер разработчика»
Удаленный сервер разработчика(Windows, Linux) Среда выполнения (apache, php-fpm) Рабочее место разработчика(Windows, Linux) Проект IDE Контроль версий Код веб-проекта Код веб-проекта Ядро Битрикс ftp, ssh, shared disk БД • Быстрая индексация веб-проекта • Нет подсветки ядра Битрикс, но можно зайти в онлайн api или установить/написать плагин Битрикс и IDE. «Удаленный сервер разработчика – локальные файлы проекта»
Особенности • Ядро D7 и контроль версий, папка “/local” • Ветки DVCS • Аудит кода • Аудит безопасности • Конфигурации разработки: персональная, тестовая, боевая • Deploy • NFR-ключи, одна база/много «ядер»
Локализация изменений, папка «local» activities - действия БП components - компоненты; gadgets - гаджеты рабочего стола modules - модули php_interface - init.php, папка user_lang templates - шаблоны сайтов, шаблоны компонентов, шаблоны страниц
Разработчик 1 Разработчик 2 Разработчик 3 Ветка 1 Ветка 2 Ветка 3 Вед. разработчик Ветка DEV Изменения в ветки DEV/TESTING переносит опытный разработчик Серверы разработки Ветка TESTING Ветка PRODUCTION На «бой» протестированные изменения выкладывает сисадмин. Вед. разработчик Серверы тестирования Серверы в production Сисадмин Тестировщик 1 Тестировщик 2 Управление версиями
Wiki • Это удобнее, чем «кидаться» письмами и документами • Сохраняется история изменений страницы • Можно задать права • Легко создать древовидную структуру проектов • Легко искать по информации • Можно прикреплять файлы/изображения
Трекеры задач и багов • Задачи не теряются • Можно отследить общение по задаче • В Wiki можно сослаться на задачи и баги и их статус • Удобно состыковать с гибким процессом разработки – ссылка на коммит
Обзор инструментов для команды Раб. группа: Битрикс24/Корппортал Redmine Confluence Mercurial SVN Git Track Excel MediaWiki Bazaar Управление требованиями Управление версиями кода Раб. группа: Битрикс24/Корппортал Jira Redmine ZendStudio PhpStorm Eclipse PDT TrackStudio Track Mantis PhpED NetBeans Управление задачами, временем, рисками, документами, проектом Среды разработки Xdebug XHProf Pinba Средства отладки для разработчиков
Deploy, Continuous Integration • Код – в контроле версий • Контент в файлах и контроль версий • Как передавать изменения в БД? • Экспорт/импорт инфоблоков, пользователей, веб-форм • Сисадмин и пиво
Скрипты миграции • Скрипт пишет программист • Добавляет в контроль версий • Скрипт выполняет сисадмин на удаленном сервере • Еще вопросы есть? //добавление свойства типа HTML $arFields = Array( "NAME" => "Итог", "ACTIVE" => "Y", "SORT" => "600", "CODE" => "ITOG", "PROPERTY_TYPE" => "S", "USER_TYPE" => "HTML”, "IBLOCK_ID" => $arParams["IBLOCK_ID"] ); $ibp = new CIBlockProperty; $PropID = $ibp->Add($arFields); //создание группы $group = new CGroup; $arFields = Array( "ACTIVE" => "Y", "C_SORT" => 100, "NAME" => "Имя группы", "DESCRIPTION" => "Описание группы", "STRING_ID" => "GROUP_1" ); $NEW_GROUP_ID = $group->Add($arFields); if ( strlen($group->LAST_ERROR)>0 ) ShowError($group->LAST_ERROR);
Обновление Битрикс • Версия ядра на «бою» и сервере разработки • Резервное копирование • Методика обновления «боевого» сервера • Как обновлять сервера разработки – база и файлы?
Как доработать проект клиента? • Идентичность ядер, дистрибутивы - обновления • Дамп файлов и БД • Репликация БД • Модульное и функциональное тестирование – сетка безопасности