Bitrix Migration (BIM)

Bitrix, bim, migration, db, битрикс

View the Project on GitHub cjp2600/bim-core

Bitrix Migration (BIM)

Latest Stable Version Total Downloads Latest Unstable Version License

Версионная миграция структуры БД для 1С Битрикс CMS

1 Установка

1.1 Автоматическая установка

Для установки и инициализации bim для bitrix проекта необходимо выполнить следующиие действия из корня проекта:

curl -s https://getcomposer.org/installer | php
php -r "readfile('https://raw.githubusercontent.com/cjp2600/bim/master/install');" | php

Автоматические действия установщика:

  1. Добавление файла bim в корень проекта.
  2. Инициализация composer autoloader в файле init.php
  3. Создание файла composer.json в корне проекта со ссылкой на bim репозиторий "require": { "cjp2600/bim-core": "dev-master"}

1.2 Ручная установка

Для ручной установки bim необходимо:

curl -s https://getcomposer.org/installer | php
#!/usr/bin/php
<?php

ini_set('max_execution_time', 36000);

define("NO_KEEP_STATISTIC", true);
define("NO_AGENT_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
$_SERVER["DOCUMENT_ROOT"] = dirname(__FILE__);
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

\Bim\Migration::init();
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php'))
    require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';
{
    "require": {
        "cjp2600/bim-core": "dev-master"
    }
}
/vendor
*.lock

2 Настройка

Для начала работы обновляем composer и создаем миграционную таблицу в БД:

php composer.phar update

Создаём таблицу миграций :

php bim init

3 Выполнение миграций [BIM UP]

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

Выполняет все миграции где найден указанный тег в описании.

Например:

Description: add new migration #iws-123

4 Отмена выполненых миграций [BIM DOWN]

php bim down

Отменяет весь список выполненных миграционных классов.

php bim down 1423660766

Отменяет указанную в праметрах миграцию.

php bim down --from="29.01.2015 00:01" --to="29.01.2015 23:55"
php bim up --tag=iws-123

Отменяет все миграции где найден указанный тег в описании.

Например:

Description: add new migration #iws-123

5 Вывод списка миграций [BIM LS]

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

6 Создание новых миграций [BIM GEN]

Существует два способа создания миграций:

1) Создание пустой миграции:

Создается пустой шаблон миграционного класса. Структура класса определена интерфейсом Bim/Revision и включает следующие обязательные методы:

Дополнительно запрашивается:

Пример:

php bim gen

Также возможно передать description опционально:

php bim gen --d="new description #iws-123"

Далее создается файл миграции вида: */[migrations_path]/[timestamp].php

Например: /migrations/123412434.php

2) Создание миграционного кода по наличию:

Создается код развертывания/отката существующего элемента схемы bitrix БД. На данный момент доступно генерация по наличию для следующих элементов bitrix БД:

2.1 IblockType ( php bim gen IblockType:[add|delete] ):

Создается Миграционный код "Типа ИБ" включая созданные для него (UserFields, IBlock, IblockProperty)

Дополнительно запрашивается:

Пример:

php bim gen IblockType:add

Также возможно передать iblock type id и description опционально:

php bim gen IblockType:add --typeId=catalog --d="new description #iws-123"

2.2 Iblock ( php bim gen Iblock:[add|delete] ):

Создается Миграционный код "ИБ" включая созданные для него (IblockProperty)

Дополнительно запрашивается:

Пример:

php bim gen Iblock:add

Также возможно передать iblock code и description опционально:

php bim gen Iblock:add --code=goods --d="new description #iws-123"

2.3 IblockProperty ( php bim gen IblockProperty:[add|delete] ):

Создается Миграционный код "Свойства ИБ"

Дополнительно запрашивается:

Пример:

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"

2.4 Hlblock ( php bim gen Hlblock:[add|delete] ):

Создается Миграционный код "Highloadblock" включая созданные для него (UserFields)

Дополнительно запрашивается:

Пример:

php bim gen Hlblock:add

Также возможно передать hlblock id и description опционально:

php bim gen IHlblock:add --id=82 --d="new description #iws-123"

2.4 HlblockField ( php bim gen HlblockField:[add|delete] ):

Создается Миграционный код "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"

Обратите внимание!

что миграционные классы созданные по наличию, выполняются автоматически.

7 Информация о проекет [BIM INFO]

Информация о текущем bitrix проекте:

Пример:

php bim info