Битрикс, composer, маркетплейс и все все все





Недавно мы корректно подружили composer и битрикс. Сегодня мы поделимся с вами этой методикой и интересным рассказом как можно заработать денег.

Немного теории

Все что будет сказано ниже - это слова о способе установки модулей Битрикса.

Вообще говоря существует четыре хороших варианта как модули могут попадать к клиентам. Композер - это такой же способ, как и установка через маркетплейс битрикс.

Каждый из способов имеет свои достоинства и недостатки

маркетплейс битрикскомпозерручная установкагипотетический свой маркетплейс
распространение решенийготовая платформа распространения (хотя есть нарекания)packagist.org
github
VCS
нетнужно создавать и развивать
коммерческие решениявозможность продажисчитается, что здесь невозможно (хотя это не так)-да
opensourceнет возможностей совместной работыданетнет или да
автоматизациянетесть зависимости, автоматизация, совместная работанетзависит от вас
нужна квалификация для использованиянетдаданет

Установка через композер

Не так давно добрая душа написала расширение под композер чтобы тот понимал Битрикс. Установка пакетов теперь совсем проста.

Как работает композер

Логично предположим, что у вас есть проект. Вам надо сделать три вещи:
- установить композер
- сочинить специальный файл composer.json
- добавить папки которые сгенерирует композер в игнор в контроле версий все, вы великолепны! Скажите композеру обновиться и он стянет все нужные пакеты.
Рассмотрим подробнее и на примерах как это происходит.

Установка композера

Слово "установка" означает, что его надо скачать и запустить из консоли. Так:
php composer.phar
Покажет вам что композер готов к работе и даст хелп по использованию оного:

Выполнение всех команд аналогично.
Композер нужно положить в проекте, или с помощью .bashrc сделать его запуск удобным.
В интернете можно найти море подробной информации об использовании composer. Можете научиться его запускать на любом примере и потом уже переходить к битриксу.

Если Вы положите composer.phar в корень сайта, не забудьте закрыть к нему доступ в .htaccess

сочиняем файл composer.json

Этот файл должен лежать в корне проекта по соседству с composer.phar. В файлике мы описываем: что у нас за проект (описание нужно людям, а не машинам), и какие пакеты (модули) нам нужны. Для того чтобы вы могли провести тесты, мы подготовили репозиторий на гитхабе который вы можете подключить:
https://github.com/bitrix-expert/bex.d7dull
И готовый composer.json
https://gist.github.com/may-cat/75cd2b461584b50f1635
- к слову вы можете подключать и корпоративные, скрытые от всего мира репозитории, по ссылке приведён пример подобного подключения.
Обратите внимание что при подключении приватного репозитория нужно будет корректно настроить доступ по ssh для git.

Добавить папки в игнор

Это обязательное условие, чтобы не превращать корневой репозиторий в кашу. В том и смысл композера - подтягивать свежие версии софта а в корневом репозитории хранить только список нужных пакетов.
Так делает например yii, игнорируя папку vendor:
https://github.com/yiisoft/yii2-app-basic/blob/master/.gitignore
И так
https://gist.github.com/may-cat/e667d81b16c9656435db
Должны сделать и мы. Убедитесь что создаваемые папки не попадут в ваш репозиторий.

Запуск

Набираем php composer.phar update и наслаждаемся тем как композер подтянул модули из публичных и приватных репозиториев.

Подготовка модулей

Для того, чтобы Ваш модуль мог быть устанавливаем через композер, у него в корне должен лежать файл composer.json со специальной разметкой, которая расскажет о модуле и его зависимостях.
Пример подобного описания можно посмотреть в нашем модуле
https://github.com/bitrix-expert/bex.d7dull/blob/master/composer.json
или в любом другом решении, коеих в интернете море.
Как Вы можете заметить, основная идея в том, чтобы каждый модуль выполнял свою задачу, но делал её хорошо. И чтобы эти модули можно было связывать друг с другом благодаря зависимостям.

База данных

"Но как же апдейты?! Как же изменения в базе данных?!" - воскликнет внимательный читатель.
Апдейты вообще, и изменения в базе данных в частности при использовании данной схемы не сложнее, чем сравнение двух чисел. Одно число - это номер ожидаемой версии базы данных. Это число находится в файлах, которые подтягиваются через git.
Второе число - это номер актуальной версии базы данных, которое хранится в самой базе данных.

Сравнив два числа во время подключения модуля (то есть в файле include.php этого модуля) мы можем делать вывод о том, запускать ли модуль или пора выкидывать исключение и звать админа, неправильно настроившего сайт.

Соответственно, сам модуль, в административном разделе должен предоставлять интерфейс для собственного обновления. Где будут лежать обновления, как он будет их применять - остаётся на совести разработчика модуля.

Свой маркетплейс

Но всё это - несовершенные технологии.
Представьте себе, ведь Вы можете озвучить свои требования по поводу того, как должны размещаться обновления базы данных (в каких файлах, папочках и с какими пометками), и сделать какие-то общие скрипты, которые будут заниматься выкачиванием обновлений (т.е. сделают git pull) и запуском скриптов обновлений.
По сути мы приходим к идее своего маркетплейса.

На существующий маркетплейс есть нарекания, которые сама Компания игнорирует - у неё своя политика.
Ничего (включая юридическую сторону вопроса) не мешает сделать модуль, который будет ходить куда-то за списком доступных решений, и заниматься магией обновлений.
К слову, маркетплейс Битрикса работает примерно так же.

Сложность тут, конечно, не в технической стороне вопроса: можно сделать и покупку доступа к исходникам, и автоматизированный контроль качества, и много чего ещё.
Авторам нового маркетплейса предстоит провести титаническую работу по отбору качественных решений и по популяризации оной площадки среди конечных потребителей.
Однако, тут как никогда к месту две поговорки, авторство которых приписывается евреям:
"Если для решения проблемы нужно потратить деньги - то это не проблема, а расходы", и "если потратив какую-то сумму денег, ты заработаешь больше денег, то это не траты - это инвестиции".

Вместо заключения

Мы выступаем за популяризацию платформы, за повышение уровня квалификации разработчиков и за их совместную работу над этим самым качеством.
Без вложений в opensource это невозможно. И пусть Битрикс - это прежде всего корпоративное решение, но пусть NDA и зашоренность коммерсантов не становятся препятствием для развития технологий.
Больше решений - хороших и лучших!

Комментарии

comments powered by HyperComments