ФиксИнтернет-магазин на 1С-Битрикс под ключ за 30 дней по фиксированной цене

CI/CD для интернет-магазина: автодеплой без простоя

CI/CD и автодеплой без простоя для интернет-магазина на 1С-Битрикс: git, миграции, откат, обмен с 1С

Правку выкатывают вечером по FTP прямо на боевой сайт, что-то ломается, магазин лежит в самый трафик, а откатиться некуда — предыдущей версии никто не сохранил. Знакомая картина для многих проектов на 1С-Битрикс. Ручной деплой «перетащил файлы и надеюсь, что не упало» — это не про скорость, а про регулярный риск потерять продажи из-за одной опечатки в релизе.

Эта статья — о том, как настроить CI/CD и автодеплой для интернет-магазина на 1С-Битрикс так, чтобы выкладка была быстрой, повторяемой и без простоя, а откат занимал секунды. Разберём организацию кода в git, окружения, конвейер проверок, деплой без даунтайма, миграции базы и особенности кэша и обмена с 1С. Если проект пока «причёсан» плохо, начать разумно с аудита и оптимизации 1С, чтобы навести порядок в коде перед автоматизацией.

Коротко

  • CI/CD для Битрикс реален: держите код в git, доработки в /local, не правьте ядро, исключайте изменяемые данные и секреты.
  • Деплой без простоя строится на атомарном переключении релиза симлинком и вынесении upload и кэша в постоянные папки.
  • Изменения базы оформляйте как идемпотентные миграции, а кэш и обмен с 1С аккуратно вписывайте в шаги деплоя.
  • Откат — это переключение симлинка обратно; предыдущий релиз всегда должен оставаться на месте.

Зачем магазину CI/CD

CI/CD — это автоматизация пути изменения от коммита до боевого сайта. Для интернет-магазина, который теряет деньги за каждую минуту простоя, это не «инженерная роскошь», а способ снизить риск и ускорить развитие. Ручной деплой опасен по трём причинам: он не повторяем (каждый раз чуть по-разному), не оставляет следов (что и когда выкатили — неизвестно) и не имеет отката (сломалось — чините на живом).

Автоматизированный конвейер убирает эти проблемы: релиз всегда собирается одинаково, история выкладок сохраняется, а откат — это одна команда. В результате команда выкатывает чаще и спокойнее, а бизнес меньше зависит от «а вдруг сегодня уроним магазин». Это прямая экономия на инцидентах и ускорение изменений.

Что такое CI и CD простыми словами

За аббревиатурой стоят две связанные, но разные вещи.

ТерминЧто означаетЧто делает на практике
CI (интеграция)Непрерывная сборка и проверкаНа каждый коммит: сборка, тесты, статический анализ
CD (доставка/деплой)Автоматическая выкладкаПроверенный код едет на staging и в бой
АртефактСобранный релизГотовый к выкладке набор файлов
ПайплайнКонвейер шаговПоследовательность: сборка → тест → деплой

Проще говоря: CI следит, чтобы новый код не ломал сборку и проходил проверки, а CD доставляет его на сервер без ручных операций. Вместе они превращают выкладку из нервного события в рутинную кнопку.

Пайплайн релиза: от кода до мониторинга Кодветка, коммитТестыавтопроверкиСборкаартефактДеплойна боевойМониторингошибки, метрики
Схема: каждое изменение проходит автотесты и сборку, безопасно выкатывается на боевой сервер, а мониторинг сразу показывает ошибки и метрики — откат под рукой.

Git и организация кода Битрикс

Фундамент любого CI/CD — код в git. Без репозитория с историей автоматизировать нечего. Для Битрикс ключевое правило — вся ваша разработка живёт в папке /local: компоненты, шаблоны, модули, обработчики событий. Так код изолирован от ядра и удобно версионируется.

Правильная организация кода — тема сама по себе. Как выносить логику в модули и работать без правки ядра, мы разбираем в статьях про разработку модулей под Битрикс и про D7 и ORM. Без этой дисциплины автодеплой лишь ускорит доставку хаоса.

Что нельзя коммитить

Не всё, что лежит на боевом сервере, должно быть в git. Изменяемые данные и секреты исключают из репозитория — иначе деплой будет затирать пользовательский контент и раскрывать пароли.

Правило разделения: в git — то, что вы пишете (код и конфигурация деплоя); вне git — то, что генерируется или загружается на работающем сайте (данные, кэш, секреты). Смешение этих категорий — источник половины проблем деплоя.

Окружения: staging и боевой

Предсказуемый деплой невозможен без разделения окружений. Минимум — боевой контур и staging, максимально похожий на него. На staging релиз проверяют перед выкладкой на бой, а разработку ведут на копии, а не на живом сайте.

Одинаковость окружений убирает целый класс ошибок «на моей машине работало, а на бою упало»: разные версии PHP, отсутствующие расширения, другие настройки. Чем ближе staging к продакшену, тем меньше сюрпризов при релизе. Дополнительно заводят контур для автотестов. Инфраструктура окружений строится на понятных решениях — про их настройку под Битрикс мы писали в статье про хостинг и инфраструктуру BitrixVM.

Конвейер сборки и проверок

Сердце CI — конвейер, который запускается на каждое изменение и не пускает в бой заведомо сломанный код. Для магазина на Битрикс разумный минимум проверок такой:

  1. Синтаксис PHP. Быстрая проверка, что код вообще парсится, — ловит опечатки до выкладки.
  2. Статический анализ. Линтеры и анализаторы находят потенциальные ошибки и нарушения стиля.
  3. Smoke-тесты. Проверка, что ключевые страницы (главная, каталог, карточка, корзина) открываются на staging.
  4. Проверка оформления. Прогон сценария оформления заказа на тестовом контуре.
  5. Сборка артефакта. Формирование готового к выкладке релиза.

Полное покрытие юнит-тестами на контентном проекте не всегда оправдано, но smoke-тесты ключевых страниц и оформления заказа ловят большинство критичных поломок дёшево. Конвейер — это страховка, которая срабатывает до того, как ошибка увидит покупатель.

Деплой без простоя

Главная задача — выкатить релиз так, чтобы пользователи не увидели ни ошибки, ни полусобранного состояния. Классический приём — атомарное переключение. Новый релиз собирается в отдельной директории, полностью готовится, и только затем симлинк «текущая версия» мгновенно переключается на него.

Пользователь в любой момент видит либо старый, либо новый релиз целиком, но никогда — промежуточное состояние. Изменяемые данные (upload, кэш, файлы обмена) выносят в отдельные постоянные папки, которые подключаются к каждому релизу симлинками, чтобы они не терялись при переключении. Такой деплой даёт нулевой простой и мгновенный откат: чтобы вернуться, достаточно переключить симлинк на предыдущий релиз, который остаётся на диске.

Миграции базы данных

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

Хорошие миграции идемпотентны (применяются без вреда при повторе) и обратимы (имеют план отката). Тогда структура окружений не расходится, а релиз предсказуем. Для Битрикс это означает создание инфоблоков, свойств и настроек кодом, а не кликами. Такой подход требует дисциплины, но именно он делает автодеплой безопасным для проектов, где база меняется вместе с кодом.

Кэш и обмен с 1С при релизе

Две особенности Битрикс требуют внимания при деплое — кэш и обмен с 1С. Кэш компонентов и меню после выкладки обычно нужно сбросить, иначе пользователи увидят старую разметку или логику. Но полный сброс на нагруженном сайте вызывает всплеск нагрузки, пока кэш прогревается заново.

Обмен с 1С — критичный процесс, и деплой не должен портить его данные. Про надёжность и безопасность интеграций мы подробнее писали в статье про REST, вебхуки и безопасность.

Откат и защита от сбоев

Даже с проверками релиз иногда ломается на бою — поэтому откат должен быть быстрым и надёжным. При атомарном деплое откат — это переключение симлинка на предыдущий релиз, который никуда не делся. Секунды, а не паника и восстановление из бэкапа.

Дополнительно защищают релиз несколькими практиками: держать несколько последних релизов на диске для отката на любой из них, снимать резервную копию базы перед миграциями, мониторить ключевые метрики (доступность, ошибки, оформление заказа) сразу после выкладки. Если после релиза выросли ошибки или упало оформление — автоматика или дежурный откатывают версию, не дожидаясь разбора. Быстрая обработка заказов и стабильность продаж напрямую зависят от такой дисциплины — её мы закладываем в услугу автоматизации продаж и склада на 1С.

Частые ошибки

Чек-лист внедрения

  1. Код в git. Репозиторий с историей, доработки в /local, ядро не правится.
  2. Данные исключены. upload, кэш, логи, файлы обмена и секреты вне репозитория.
  3. Окружения разделены. Боевой и похожий на него staging, контур для тестов.
  4. Конвейер проверок. Синтаксис, статический анализ, smoke-тесты, сборка артефакта.
  5. Деплой без простоя. Атомарное переключение симлинка, общие данные вынесены.
  6. Миграции автоматизированы. Идемпотентные и обратимые, применяются в деплое.
  7. Откат и мониторинг. Прошлые релизы на диске, бэкап перед миграциями, контроль метрик после выкладки.

Вывод

CI/CD превращает выкладку из рискованного вечернего ритуала в предсказуемую кнопку. Для интернет-магазина на 1С-Битрикс это прямая защита выручки: релизы собираются одинаково, проверяются до боя, выкатываются без простоя и откатываются за секунды. Битрикс этому не мешает — мешает беспорядок в коде, поэтому автоматизацию всегда предваряет дисциплина: git, /local, отказ от правок ядра.

Соберите фундамент — код в репозитории, разделённые окружения, конвейер проверок, атомарный деплой с откатом — и аккуратно впишите в него специфику Битрикс: миграции, кэш и обмен с 1С. В результате команда выкатывает изменения чаще и спокойнее, а бизнес перестаёт бояться собственных релизов.

Частые вопросы

Можно ли вообще настроить CI/CD для 1С-Битрикс?

Да, и это стандартная практика для серьёзных проектов. Битрикс не мешает автодеплою, если соблюдать правила: держать код в git, выносить доработки в /local, не править ядро, а изменяемые данные (загрузки, кэш, файлы обмена) исключать из выкладки. Тогда сборка и деплой автоматизируются так же, как в любом PHP-проекте. Специфика Битрикс — в аккуратной работе с базой, кэшем и обменом с 1С, но она решаема.

Что нельзя коммитить в git на проекте Битрикс?

В репозиторий не кладут пользовательские загрузки (папка upload), кэш, логи, файлы обмена с 1С, локальные настройки подключения к базе и любые секреты. Ядро Битрикс обычно тоже исключают из основного репозитория или фиксируют отдельно, потому что оно обновляется своим механизмом. В git идёт то, что вы разрабатываете: /local с компонентами, шаблонами, модулями и обработчиками, а также конфигурация деплоя.

Как деплоить без простоя магазина?

Основной приём — атомарное переключение: новый релиз собирается в отдельной директории, а затем симлинк на «текущую версию» мгновенно переключается на неё. Пользователи не видят полусобранного состояния, а откат — это переключение симлинка обратно. Общие изменяемые данные (upload, кэш) выносят в отдельные постоянные папки, которые подключаются к каждому релизу, чтобы они не терялись при переключении.

Что делать с миграциями базы данных при деплое?

Изменения структуры базы и данных оформляют как повторяемые миграции, которые применяются автоматически на этапе деплоя. Для Битрикс это могут быть скрипты, создающие инфоблоки, свойства, типы цен и прочее программно, а не руками через админку. Важно, чтобы миграции были идемпотентными и обратимыми: применялись без вреда при повторе и имели план отката. Тогда структура окружений не расходится и релиз предсказуем.

Как быть с кэшем Битрикс при выкладке?

После деплоя кэш компонентов и меню обычно нужно сбросить, иначе пользователи увидят старую разметку или логику. Сброс кэша встраивают в шаг деплоя. Но делать это аккуратно: полный сброс на высоконагруженном сайте вызывает всплеск нагрузки, пока кэш прогревается заново. На крупных проектах кэш прогревают заранее или сбрасывают выборочно, а не «всё сразу», чтобы не уронить сайт в момент релиза.

Нужны ли тесты для магазина на Битрикс?

Как минимум базовые проверки в конвейере окупаются: синтаксическая проверка PHP, статический анализ, прогон критичных сценариев (открывается ли главная, каталог, корзина, проходит ли оформление на тестовом контуре). Полное покрытие юнит-тестами не всегда оправдано на контентном проекте, но smoke-тесты ключевых страниц и оформления заказа ловят большинство критичных поломок до того, как релиз уедет на бой.

Как автодеплой уживается с обменом с 1С?

Обмен с 1С работает через файлы и агенты, поэтому при деплое важно не потерять незавершённые сессии обмена и не затереть файлы выгрузки. Папки обмена выносят в постоянное хранилище вне релиза, а деплой планируют так, чтобы не совпадать с тяжёлой выгрузкой. Иногда на время крупного релиза обмен ставят на паузу. Главное — деплой кода и процесс обмена не должны мешать друг другу и портить данные.

Обязательно ли иметь тестовый и боевой контуры?

Для предсказуемого CI/CD — да. Как минимум нужны боевой контур и staging, максимально похожий на него, где проверяются релизы перед выкладкой. Разработка на копии, а не на бою, и одинаковые окружения убирают класс ошибок «на моей машине работало». Дополнительно заводят контур для автотестов. Разделение окружений — фундамент, без которого автодеплой лишь ускоряет доставку ошибок на живой сайт.

С чего начать внедрение CI/CD на действующем магазине?

С наведения порядка: перенести код в git, вынести доработки в /local, убрать правки ядра, исключить из репозитория изменяемые данные и секреты. Затем поднять staging и настроить простой автоматический деплой git → сервер. Дальше поэтапно добавлять проверки, миграции, атомарное переключение и откат. Начинать сразу со сложного конвейера на непричёсанном проекте бессмысленно — сначала дисциплина кода, потом автоматизация.

Поделиться:

Хотите выкатывать релизы без простоя и страха?

Настроим CI/CD и автодеплой для магазина на 1С-Битрикс: git, staging, проверки, деплой без даунтайма и мгновенный откат с учётом обмена с 1С.

Автоматизация на 1С

Редакция B2Bsite

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины на 1С-Битрикс: настраиваем git, CI/CD и деплой без простоя для проектов, где стабильность продаж критична.

← Все статьи блога