Версионная миграция структуры БД для 1С Битрикс CMS
- Установка
- Настройка
- Выполнение - bim up
- Отмена - bim down
- Вывод списка - bim ls
- Создание - bim gen
- Создание пустой миграции
- Создание миграционного кода по наличию
- Модуль (iblock,highloadblock)
- IblockType
- Iblock
- IblockProperty
- Highloadblock
- HighloadblockField
- Модуль (main)
- Group
- Site
- Режим multi - bim gen multi
- Тегирование миграций
- Логирование
- Информация о проекте - bim info
Для установки и инициализации bim для bitrix проекта необходимо выполнить следующиие действия из корня проекта:
- Установить Composer:
curl -s https://getcomposer.org/installer | php
- Выполнить установочный скрипт:
php -r "readfile('https://raw.githubusercontent.com/cjp2600/bim/master/install');" | phpАвтоматические действия установщика:
- Добавление файла bim в корень проекта.
- Инициализация composer autoloader в файле init.php
- Создание файла composer.json в корне проекта со ссылкой на bim репозиторий "require": { "cjp2600/bim-core": ">=1.0.0"}
Для ручной установки bim необходимо:
- Установить Composer:
curl -s https://getcomposer.org/installer | php
- Добавть инициализацию composer (в файл init.php добавить запись):
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php'))
require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';- Создать в корне сайта файл composer.json с содержимым:
{
"require": {
"cjp2600/bim-core": ">=1.0.0"
}
}- В .gitignore добавить запись:
/vendor
- Done! :):
php vendor/bin/bim infoДля начала работы обновляем composer и создаем миграционную таблицу в БД:
php composer.phar updateСоздаём таблицу миграций :
php bim init- Общее выполнение:
php bim upВыполняет полный список не выполненых либо ранее отмененных миграционных классов отсортированых по названию (timestamp).
- Еденичное выполнение:
php bim up 1423660766Выполняет указанную в праметрах миграцию.
- Выполнение по временному периоду:
php bim up --from="29.01.2015 00:01" --to="29.01.2015 23:55"- Выполнение по тегу:
php bim up --tag=iws-123Выполняет все миграции где найден указанный тег в описании.
- Логирование:
php bim up --logging- Общая отмена:
php bim downОтменяет весь список выполненных миграционных классов.
- Еденичная отмена:
php bim down 1423660766Отменяет указанную в праметрах миграцию.
- Отмена по временному периоду:
php bim down --from="29.01.2015 00:01" --to="29.01.2015 23:55"- Отмена по тегу:
php bim down --tag=iws-123Отменяет все миграции где найден указанный тег в описании.
- Логирование:
php bim down --logging- Общей список:
php bim ls- Список выполненных миграций:
php bim ls --a- Список отменённых миграций:
php bim ls --n- Список миграций за определённый период времени:
php bim ls --from="29.01.2015 00:01" --to="29.01.2015 23:55" - Список миграций по тегу:
php bim ls --tag=iws-123Существует два способа создания миграций:
Создается пустой шаблон миграционного класса. Структура класса определена интерфейсом Bim/Revision и включает следующие обязательные методы:
- up(); - выполнение
- down(); - отмена
- getDescription(); - получения описания.
- getAuthor(); - получение автора.
Дополнительно запрашивается:
- [Description]
Пример:
php bim genТакже возможно передать description опционально:
php bim gen --d="new description #iws-123"Далее создается файл миграции вида: */[migrations_path]/[timestamp].php
Например: /migrations/123412434.php
Создается код развертывания/отката существующего элемента схемы bitrix БД. На данный момент доступно генерация по наличию для следующих элементов bitrix БД:
Создается Миграционный код "Типа ИБ" включая созданные для него (UserFields, IBlock, IblockProperty)
Дополнительно запрашивается:
- [IBLOCK_TYPE_ID]
- [Description]
Пример:
php bim gen IblockType:addТакже возможно передать iblock type id и description опционально:
php bim gen IblockType:add --typeId=catalog --d="new description #iws-123"Создается Миграционный код "ИБ" включая созданные для него (IblockProperty)
Дополнительно запрашивается:
- [IBLOCK_CODE]
- [Description]
Пример:
php bim gen Iblock:addТакже возможно передать iblock code и description опционально:
php bim gen Iblock:add --code=goods --d="new description #iws-123"Создается Миграционный код "Свойства ИБ"
Дополнительно запрашивается:
- [IBLOCK_CODE]
- [PROPERTY_CODE]
- [Description]
Пример:
php bim gen IblockProperty:addТакже возможно передать iblock code, property code и description опционально:
php bim gen IblockProperty:add --code=goods --propertyCode=NEW_ITEM --d="new description #iws-123"Создается Миграционный код "Highloadblock" включая созданные для него (UserFields)
Дополнительно запрашивается:
- [HLBLOCK_ID]
- [Description]
Пример:
php bim gen Hlblock:addТакже возможно передать hlblock id и description опционально:
php bim gen IHlblock:add --id=82 --d="new description #iws-123"Создается Миграционный код "HighloadblockField (UserField)"
Дополнительно запрашивается:
- [HLBLOCK_ID]
- [USER_FIELD_ID]
- [Description]
Пример:
php bim gen HlblockField:addТакже возможно передать hlblock id, hlblock field id и description опционально:
php bim gen IHlblock:add --hlblockid=93 --hlFieldId=582 --d="new description #iws-123"Создается Миграционный код "Group (Группы пользователей)"
Дополнительно запрашивается:
- [GROUP_ID]
- [Description]
Пример:
php bim gen Group:addТакже возможно передать group id, и description опционально:
php bim gen Group:add --id=5 --d="new description #iws-123"Создается Миграционный код "Site (Сайты)"
Дополнительно запрашивается:
- [SITE_ID]
- [Description]
Пример:
php bim gen Site:addТакже возможно передать site id, и description опционально:
php bim gen Site:add --id=s1 --d="new description #iws-123"Обратите внимание!
что миграционные классы созданные по наличию, выполняются автоматически.
Так же доступен режим массовой генерации по наличию. Данный способ удобен при созданиие миграций по наличию для множества одинаковых элементов. Например для нескольких UserFields.
Пример:
php bim gen multiПри создании нового миграционного класса существует возможность выставления тега в комментарии к миграции для дальнейшей более удобной отмены либо выполнения группы миграций связанных одним тегом.
Формат: #[название]
Пример: Как вариант применения, вставлять тег номера задачи из трекера.
[Description]: #IWS-242 Add new Iblock[services]Существует возможность логирования информации о состоянии выполнения или отмены миграций.
Пример:
php bim up --loggingили
php bim down --loggingПримечание: По умолчанию инфомация сохраняется в файл вида _log/bim/[Year]/[Month]/[Day]/bim.log
Информация о текущем bitrix проекте:
- Название проекта
- Версия bitrix
- Редакция bitrix
Пример:
php bim info