Senior Архитектура Рекомендуется

Миграции и версионирование схемы

Версионирование схемы данных (инфоблоки, свойства, пользовательские поля, Highload-блоки) реализуется через идемпотентные скрипты миграций на базе API Битрикса. В коде миграций запрещено использовать автоинкрементные ID сущностей: привязка ведется строго по символьным кодам и типам, а накат миграций автоматизируется в пайплайне деплоя.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Почему изменения через админку не версионируются
  • 2
    Миграции инфоблоков, свойств, UF и highload-блоков
  • 3
    Инструменты миграций для Битрикса
  • 4
    Миграции в процессе деплоя

Материалы

Проверь себя

После деплоя на проде пропало свойство инфоблока, которое на стенде есть. Что произошло?

Свойство добавили через админку стенда, и оно осталось в b_iblock_property стенда — Git схему данных не хранит. Изменение нужно описать миграцией и применить её на проде в процессе деплоя.

Почему в миграции нельзя писать ID инфоблока, даже если сегодня он одинаков на всех окружениях?

ID — автоинкремент, на следующей копии он будет другим. Инфоблок ищут по CODE и типу, свойство — по CODE внутри инфоблока, UF — по ENTITY_ID и FIELD_NAME, highload-блок — по NAME, и создают только если не нашли.

Миграция highload-блока упала на середине. Что осталось в базе?

Часть изменений: API highload-блоков меняет несколько объектов поэтапно и не откатывает выполненные шаги. Миграция должна быть идемпотентной, чтобы её можно было запустить повторно, а перед ней — бэкап.

Заказчик просит откатить деплой, а миграция уже добавила свойство и пересчитала данные. Как откатывать?

Для схемы инфоблоков честного down нет: откат — это бэкап базы, снятый перед миграцией, либо исправление вперёд новой миграцией. Поэтому бэкап перед миграциями обязателен в пайплайне.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти