Bitrix Migration (BIM)
Версионная миграция структуры БД для 1С Битрикс CMS
Для установки и инициализации bim для bitrix проекта необходимо выполнить следующиие действия из корня проекта:
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 необходимо:
curl -s https://getcomposer.org/installer | php
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php'))
require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';
{
"require": {
"cjp2600/bim-core": ">=1.0.0"
}
}
/vendor
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 и включает следующие обязательные методы:
Дополнительно запрашивается:
Пример:
php bim gen
Также возможно передать description опционально:
php bim gen --d="new description #iws-123"
Далее создается файл миграции вида: */[migrations_path]/[timestamp].php
Например: /migrations/123412434.php
Создается код развертывания/отката существующего элемента схемы bitrix БД. На данный момент доступно генерация по наличию для следующих элементов bitrix БД:
Создается Миграционный код "Типа ИБ" включая созданные для него (UserFields, IBlock, IblockProperty)
Дополнительно запрашивается:
Пример:
php bim gen IblockType:add
Также возможно передать iblock type id и description опционально:
php bim gen IblockType:add --typeId=catalog --d="new description #iws-123"
Создается Миграционный код "ИБ" включая созданные для него (IblockProperty)
Дополнительно запрашивается:
Пример:
php bim gen Iblock:add
Также возможно передать iblock code и description опционально:
php bim gen Iblock:add --code=goods --d="new description #iws-123"
Создается Миграционный код "Свойства ИБ"
Дополнительно запрашивается:
Пример:
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)
Дополнительно запрашивается:
Пример:
php bim gen Hlblock:add
Также возможно передать hlblock id и description опционально:
php bim gen IHlblock:add --id=82 --d="new description #iws-123"
Создается Миграционный код "HighloadblockField (UserField)"
Дополнительно запрашивается:
Пример:
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 (Группы пользователей)"
Дополнительно запрашивается:
Пример:
php bim gen Group:add
Также возможно передать group id, и description опционально:
php bim gen Group:add --id=5 --d="new description #iws-123"
Создается Миграционный код "Site (Сайты)"
Дополнительно запрашивается:
Пример:
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 проекте:
Пример:
php bim info