Статьи

DevOps для 1С: как мы построили CI/CD вокруг хранилища конфигурации

Когда речь заходит о DevOps, обычно представляют Git, Docker, автотесты и непрерывную доставку. Однако мир 1С живёт по своим законам. Здесь приходится иметь дело с огромными конфигурациями, специфическим софтом и процессами, которые устоялись ещё десятилетия назад.

В одном из проектов команда MiOps внедряла современные DevOps-практики в процесс разработки на платформе 1С. В этой статье мы расскажем, какие подходы существуют, какие инструменты мы использовали и с какими сложностями столкнулись.

Два подхода к разработке в 1С

Сегодня в экосистеме 1С есть два основных подхода к организации разработки.

Первый — классический. Он основан на использовании хранилища конфигурации 1С и применяется ещё со времён платформы 1С 8.0.

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

Второй подход — более современный. Он предполагает использование Git как единственного источника правды, работу через ветки, Merge Request и другие привычные для современного IT инструменты. Чаще всего для этого используется 1С EDT (Enterprise Development Tools).

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

Поэтому наша реализация строилась именно вокруг классического хранилища 1С.

Архитектура решения

Схема работы выглядела следующим образом:

  1. Разработчик сохраняет изменения в хранилище конфигурации 1С.
  2. Специальный процесс автоматически отслеживает появление новых изменений.
  3. Конфигурация выгружается из хранилища в набор XML-файлов.
  4. Исходный код публикуется в GitLab.
  5. Запускается статический анализ кода.
  6. Собирается новая версия конфигурации.
  7. Конфигурация загружается в тестовую базу.
  8. Выполняется автоматическое тестирование.
  9. Формируются отчёты и уведомления для разработчиков.

На первый взгляд схема выглядит привычно для любого DevOps-инженера. Но детали реализации в мире 1С оказываются гораздо интереснее.

GitSync и превращение конфигурации в исходный код

Главная проблема заключается в том, что конфигурация 1С обычно хранится в виде большого CF-файла. Его размер в крупных системах может раздуваться до десятков гигабайт, а адекватно пропихнуть такой объём в Git практически невозможно.

Для решения этой задачи использовался инструмент GitSync, написанный на языке OneScript. Он подключается к хранилищу конфигурации и раскладывает её содержимое на множество XML-файлов, где каждый объект получает собственное файловое представление. После этого структура проекта становится пригодной для хранения в GitLab и дальнейшей автоматизированной обработки.

Статический анализ кода

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

Размер формируемых отчётов достигал нескольких гигабайт. Даже сервер с 60 ГБ оперативной памяти испытывал серьёзные трудности при их обработке и загрузке в SonarQube. Чтобы решить проблему, мы разделили конфигурацию на несколько логических частей и стали анализировать их отдельно. Только после этого процесс начал работать стабильно.

Автоматическая сборка конфигурации

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

Автоматическое тестирование

Для тестирования использовался подход BDD (Behavior Driven Development) и инструмент Vanessa Automation. Тестовые сценарии описывались на русском языке с использованием синтаксиса Gherkin.

Например, сценарий мог:

  • открыть клиент 1С;
  • создать документ;
  • заполнить реквизиты;
  • провести документ;
  • проверить ожидаемый результат.

Тестировщик просто набрасывает бизнес-кейс обычным человеческим языком, а робот сам прокликивает его в интерфейсе 1С. Это позволяет гонять не отдельные функции, а проверять реальные сценарии из жизни пользователей.

Автоматизация тестового окружения

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

Отчёты и обратная связь

После завершения тестирования результаты публиковались в Allure Report. Разработчики автоматически получали информацию о результатах выполнения тестов и могли оперативно приступить к разбору выявленных ошибок.

Главная проблема — время выполнения тестов

Самым сложным этапом оказался именно запуск тестов. Полный набор сценариев занимал около трёх часов. И это далеко не предел.

На профильных конференциях коллеги по цеху, занимающиеся DevOps в 1С, делились историями о проектах, где полный прогон тестов занимает до четырнадцати часов.

Для подобных проектов единственным разумным решением становится параллельный запуск тестов и разделение сценариев между несколькими исполнителями.

По мере роста проекта необходимость в подобных механизмах становится неизбежной.

Что можно автоматизировать в 1С

Интересно, что разные заказчики видят ценность в разных частях пайплайна.

Кому-то критически важны только автотесты, а кому-то хочется на автомате собирать релизы и раскатывать их сразу по десяткам рабочих баз.

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

Автоматизация позволяет выполнять такие операции централизованно и значительно снижает вероятность ошибок.

Зачем всё это нужно

Несмотря на всю свою специфику, мир 1С на данный момент вполне совместим с современными DevOps-практиками. Да, здесь используются свои инструменты, объёмы данных зачастую исчисляются гигабайтами, а многие процессы исторически развивались по собственным правилам. Однако это не мешает применять в экосистеме 1С те же подходы, которые давно стали стандартом в других направлениях разработки: автоматический анализ кода, Git, CI/CD-пайплайны, автоматизированное тестирование и контейнеризацию.

В этом кейсе мы построили полноценный процесс: от фиксации изменений в хранилище конфигурации до автоматического тестирования и публикации отчётов. Следующим логичным шагом могла бы стать полностью автоматическая доставка изменений в продуктивную среду. Однако уже реализованная архитектура показала, что DevOps для 1С — это не экзотика, а вполне рабочий инструмент, который способен существенно упростить жизнь разработчикам и администраторам.
2026-07-09 22:14