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