Версионная миграция структуры БД для 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