Наш DevOps: вчера, сегодня, завтра

11.07.25

Разработка - DevOps и автоматизация разработки

Цель статьи – показать, что DevOps можно внедрять в проектах любого масштаба, даже с ограниченными ресурсами. Автор делится личным опытом: рассказывает, как начиналось внедрение, какие ресурсы потребовались, какие задачи удалось решить и как организован текущий рабочий процесс. Вы узнаете, как DevOps-практики помогают участникам разработки и чем DevOps-инженеры полезны для всех, кто участвует в создании решений. В статье подробно разбираются преимущества, которые дал переход на EDT, его влияние на процессы сборки, а также анализируется опыт внедрения Kubernetes – что это уже принесло и что принесет в будущем.

О чем эта история

 

Меня зовут Андрей Ворона, я инженер DevOps. Я работаю в 1С с 2002 года – начинал еще с версии 7.7. За свою карьеру прошел путь от разработчика до специалиста по автоматизации процессов. В статье хочу рассказать, как у нас в команде происходило внедрение DevOps-подхода, какие этапы мы прошли, какие решения принимали и какие сложности встретили на пути.

Эта история будет не о том, как все делается «по книжкам», а о реальном опыте – уникальном, местами болезненном, но результативном. Я буду говорить «мы», потому что это не моя личная история – это опыт всей нашей команды.

 

Начало пути: выбор Jenkins как сервера автоматизации

 

Все началось с выбора инструментов. Мы решили использовать Jenkins в качестве сервера автоматизации. Почему именно он, а не GitLab или другой CI/CD-инструмент? Во-первых, на тот момент большинство компаний уже использовали Jenkins, так что мы просто шли за общей тенденцией. Во-вторых, GitLab тогда был лишь хранилищем выгруженного из хранилища кода, разработчики туда не ходили, ничего там не делали.

Сейчас ситуация изменилась, и GitLab стал играть важную роль. Часть команд ведет разработку на EDT, разработчики заходят туда, чтобы сделать запрос на слияние, провести код ревью. Возможно, если бы мы выбирали сейчас, то наш выбор был бы другим.

 

 

Все файлы Jenkins и настройки проектов мы хранили в едином репозитории. Это позволило нам структурировать процессы и унифицировать подходы. Для запуска задач указывался источник настроек, результаты тестирования выводились в Allure и на сервер SonarQube. Артефакты хранились на сетевых дисках, а для повторного использования функционала между пайплайнами использовались подключаемые модули.

 

 

 

Переход на EDT: шаг к групповой разработке через Git

 

Одним из ключевых этапов стало внедрение EDT (1C:Enterprise Development Tools). Это дало возможность перейти к групповой разработке через Git. Раньше мы работали через хранилища объектов, где часто возникали проблемы: захват объектов, очереди, взаимоблокировки.

 

 

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

 

 

Переход на Git позволил организовать полноценную непрерывную интеграцию (CI). Теперь, когда разработчик создает Merge Request, автоматически запускаются проверки качества кода и тесты. Результаты отправляются ревьюверу, который принимает решение – принять или отклонить изменения. Таким образом, проверка происходит до слияния, а не после, как это было ранее.

 

 

 

Организация ветвления и автослияние

 

Мы используем простую схему ветвления: есть ветка master, в которой находится стабильный код. Для каждой задачи разработчики создают собственную ветку, которая периодически обновляется из master благодаря автослиянию. Это позволяет как можно чаще интегрировать актуальные изменения и выявлять конфликты на ранних этапах. Если при автослиянии возникают конфликты, разработчик получает уведомление и должен их разрешить.

 

 

После завершения работы над Merge Request и успешного прохождения всех проверок изменения объединяются с master. Перед выпуском релиза ветка master блокируется, делается тег на нужный коммит, формируется комплект поставки, который окончательно тестируется и устанавливается в продакшен. Затем ветка разблокируется.

 

Единые стандарты проектов и использование Pipeline Libraries

 

Чтобы упростить работу с несколькими проектами, мы пришли к единому стандарту структуры проектов. Например, в каждом репозитории есть каталог для инициализации данных, куда кладутся XML-файлы эталонных баз для тестов. Также в одном месте находятся исходники основной конфигурации, расширений и обработок – это удобно при работе в EDT.

 

 

Для управления пайплайнами мы используем библиотеку Pipeline Libraries, вдохновленную проектом Jenkins Lib Никиты Федькина. Благодаря этому Jenkins-файлы остаются компактными, а основной функционал вынесен в отдельные модули. Можно легко менять версии библиотек, тегировать их и использовать разные версии для разных проектов или каталогов. Это обеспечивает гибкость и безопасность при тестировании новых возможностей.

 

 

 

Тестирование: параллельное выполнение и отчетность

 

Тестирование проводится последовательно-параллельно на нескольких виртуальных машинах. Сразу после начала сборки параллельно запускается проверка качества кода через SonarQube и подготовка баз данных. После подготовки базы параллельно выполняются дымовые тесты, проверка синтаксиса конфигурации и валидация средствами EDT. Сценарные тесты тоже запускаются параллельно, согласно блокам, на которые они разбиты, но на других машинах. Так как unit тестов у нас не много, и они выполняются быстро, то они не вынесены в параллельный блок, а выполняются после всех тестов. Результаты всех тестов собираются в едином отчете Allure.

 

 

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

 

 

 

Инициализация данных и работа с тестами

 

Инициализация данных – важная часть процесса. Допустим, разработчик меняет алгоритм формирования движений документа. Это вызывает падение дымовых тестов, так как в них проверяется корректность этих движений. Чтобы тесты не падали, разработчик добавляет выгрузку правильных движений с учетом доработки в каталог инициализации. Для этого используется стандартная обработка – универсальный обмен данными в формате XML.

 

 

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

 

 

 

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

 

 

 

Мониторинг и метрики: контроль состояния систем

 

Для мониторинга используются Grafana и Prometheus. Основные метрики – количество упавших сборок и «здоровье» регламентных пайплайнов. Это позволяет оперативно реагировать на сбои и своевременно их устранять.

 

 

Регламентные пайплайны отвечают за выполнение фоновых задач, таких как обновление эталонных баз или формирование комплектов поставки. Мы следим за тем, чтобы все они выполнялись корректно и полностью.

 

Переход в Kubernetes: новые возможности и вызовы

 

На данный момент мы работаем над переходом в Kubernetes. Цель – перевести сервисы (Jenkins, Nexus, Prometheus, Grafana) в эту среду для лучшей масштабируемости, отказоустойчивости и возможности использовать подход «инфраструктура как код». Также планируется запускать тесты в контейнерах, чтобы эффективнее использовать ресурсы и уменьшить влияние «мусора», который накапливается на виртуальных машинах.

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

 

Как мы обосновали необходимость DevOps бизнесу

 

Интересный момент: бизнес сам пришeл к нам с идеей внедрения DevOps. В компании много IT-команд, которые занимаются веб-сервисами, мобильными приложениями и другими продуктами. У них уже существовала система DevOps, и они видели ее преимущества. Представители бизнеса спросили: «А почему у вас, 1С-разработчиков, этого нет? Вы же тоже программисты». Так началась наша история.

DevOps действительно помогает: если тесты ловят ошибки за 15 минут до выхода в прод, люди понимают ценность подхода. А когда команда чувствует, что процессы улучшают качество и скорость работы, внедрение становится органичным.

 

Итоги: что у нас есть и куда мы идeм

 

С момента начала пути команда значительно эволюционировала:

  • Jenkins-файлы теперь хранятся в репозитории проекта.

  • Артефакты – в Nexus.

  • Появились юнит-тесты и возможность выполнять тесты на автономном сервере.

  • Интеграция с GitLab позволяет запускать проверки при событиях в репозитории – например, при создании Merge Request или обновлении ветки master.

Число используемых виртуальных машин увеличилось с 5 до 50, что связано с ростом числа проектов и необходимостью параллельного тестирования каждого Merge Request.

Мы продолжаем развивать инфраструктуру, переходим на Kubernetes и внедряем новые практики. Это не самый простой путь, но он даeт реальные результаты.

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TECH EVENT.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Тестирование QA DevOps и автоматизация разработки Программист Пользователь 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.173.37.

2160 руб.

20.01.2022    9517    36    0    

18

DevOps и автоматизация разработки Тестирование QA Программист Пользователь 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Зарплата и Управление Персоналом 3 и версии КОРП: 3.1.30.178.

3240 руб.

05.08.2024    2738    18    1    

12

DevOps и автоматизация разработки Программист Россия Бесплатно (free)

Проект демонстрирует, как можно использовать Git-хуки для повышения удобства работы с конфигуратором 1С.

02.07.2025    4253    lapinio    0    

21

DevOps и автоматизация разработки Обновление 1С Системный администратор Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом Абонемент ($m)

Продолжаем делиться опытом ICL SOFT – в этой статье рассказываем о сложном обновлении сильно доработанной конфигурации "1С:ERP Управление холдингом с версии 3.1.8.15" до актуальной версии редакции 3.2. Публикации о сложных обновлениях, которые можно найти в открытых источниках, содержат мало подробной информации об использованных инструментах и решениях. Часто в них отсутствует информация о том, что находится под капотом этих решений. Будем рады, если наша статья окажется полезной

1 стартмани

01.07.2025    1050    vladimir_iclsoft    1    

18

Групповая разработка (Git, хранилище) EDT OneScript Программист 1С v8.3 Бесплатно (free)

В данной публикации рассматривается пример реализации скрипта, который автоматизирует получение ветки из GIT репозитория и обновление конфигурации, если разработка проекта ведется в EDT.

11.06.2025    1627    AlexF1    4    

7

DevOps и автоматизация разработки Программист 1С v8.3 Россия Абонемент ($m)

Устали от ручной поддержки версий обработок, отчетов и печатных форм в 1С в разных базах, ошибок и перезаписи важных изменений разными программистами? Автоматизируйте процессы с CI/CD и Jenkins. Читайте статью, скачивайте готовые скрипты и настройки, ставьте плюс и делитесь с коллегами!

2 стартмани

09.06.2025    5368    da_1c    16    

5

EDT Программист Бесплатно (free)

Статья поможет разработчикам 1С правильно настроить масштабирование интерфейса EDT для комфортной работы на мониторах с высоким разрешением.

03.06.2025    1381    PetrovAnton    5    

6

DevOps и автоматизация разработки Системный администратор Программист Стажер Бесплатно (free)

Готовим контейнеризированный Microsoft SQL Server в среде Windows

23.05.2025    3958    SerVer1C    35    

32
Оставьте свое сообщение