+7 495 230 03 03 8 800 222 50 03

Применение DevOps в разработке 1С

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

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

Мы, как компания франчайзи 1С, также имеем дело с разработкой на базе этого программного обеспечения и за долгие годы работы накопили немалый опыт и базу знаний. Но даже эти знания и опыт не всегда позволяют сократить сроки проекта, уменьшить Time To Market или выпустить программный продукт в назначенный и подготовленный маркетологами срок.

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

Процесс разработки 1С с использованием методов DevOps

Применение DevOps в разработке 1С - EFSOL
Рисунок 1 – Схема процесса разработки 1С с помощью методов DevOps

Выбор DevOps-инструментов для
разработки 1С

Выбор IDE для разработки или системы, собственно в которой пишут код (рабочее место для программиста), под 1С – невелик, есть 1С:EDT, но в ней частенько очень отстают платформы, под которые можно разрабатывать, а наш девиз – актуальный софт в нужное время, поэтому разработку ведем непосредственно в конфигураторе и скриптами забираем xml из нужной папки.

В качестве системы версионности используем Gitlab – On-Premises. Его же используем для CI/CD, именно поэтому и выбрали эту систему VCS, а также туда кладем отчет из Allure, но об этом чуть позже. CI запускается из dev-ветки – тестирование и загрузка кода в stage, тестирование кода в Stage.

Программисты работают в своих ветках по названию функций или исправлений. После успешного тестирования кода – отправляют запрос на слияние кода с dev-веткой. После визуального контроля кода тимлид подтверждает запрос и код из ветки программиста сливается с кодом в ветке Dev, после чего запускается сборка кода и различные тесты. Схема работы с VCS постоянно видоизменяется и оптимизируется. Схематично ее можно представить следующим образом:

Применение DevOps в разработке 1С - EFSOL
Рисунок 2 – Принципиальная схема процесса разработки 1С

Серверная структура Dev-среды разработки 1С

Остановимся подробнее на серверной структуре dev-среды. Как вы уже поняли, есть отдельный сервер Gitlab, но кроме него используется сервер управления docker-контейнерами, на котором в контейнерах запущены:

Сервер 1С

Веб-Сервер

Сервер СУБД

SonarQube

Использование контейнеров позволяет:

Кроме наличия сервера, на котором размещены роли, интересующие нас в процессе разработки, также используется так называемый X-сервер: сервер с графической оболочкой: или Windows Server с установленной ролью Сервер терминалов, или Linux с графической оболочкой для запуска клиента 1С. Использование такого сервера обусловливается тем, что все тесты в 1С должны проходить в графическом режиме и имитировать взаимодействие пользователя с системой. Мы используем несколько таких серверов на различных операционных системах для проверки работы клиента на различных платформах.

Схема серверной структуры dev-среды может быть представлена следующим образом:

Применение DevOps в разработке 1С - EFSOL
Рисунок 3 – Схема серверной структуры для разработки 1С
После слияния кода в dev-ветку запускается процесс CI в Gitlab, который:

После успешного завершения тестов, CI формирует артефакт в виде расширения и кладет его в хранилище артефактов, откуда потом его может забрать менеджер проекта или же система CD для дальнейшего использования в prod-среде.

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

Для выполнения тестов UI в графическом интерфейсе используется приложение с исходным кодом Vanessa-Automation, которая позволяет в декларативном формате описать необходимые для проведения тестов действия. Важно заметить, что для формирования и отображения отчетов по тестированию, мы также используем Allure, который позволяет не только зафиксировать собственно ошибку в процессе тестирования, но и сделать скриншот ошибки, что для 1С очень важно для поиска истинных проблем ее возникновения.

Применение DevOps в разработке 1С - EFSOL
Рисунок 4 – Пример отчетов в Allure
Применение DevOps в разработке 1С - EFSOL
Рисунок 5 – Пример отчета со скриншотом
Применение DevOps в разработке 1С - EFSOL
Рисунок 6 – Пример отчетов в SonarQube

После проведения тестов, сформированные с помощью CD CFE-файлы в результате сборки и тестирования выгружаются на Stage и, после тестирования QA, отправляются на Prod.

Результат после внедрения DevOps-методов в разработке 1С

Внедрение методик DevOps в процессе разработки 1С на этом проекте помогло сократить более 40% времени на разворачивании dev-сред, тестировании и разворачивании написанного кода. Несмотря на то, что разработка на базе платформы 1С:Предприятие значительно отличается от обычной разработки ПО, гибкие методы и методики DevOps, а также большой выбор инструментов, помогли нашей команде добиться существенного сокращения времени выхода конечного продукта на рынок.

На сегодня мы предлагаем построение CI/CD для 1С разработки с последующим обслуживанием.

  • Аноним

    Можете описать стек технологии для среднестатистического проекта разработки 1с?

    • https://efsol.ru/ EFSOL

      Добрый день, в принципе он описан в статье: git, sonar, vanessa, allure, собственно 1с и, если нужен, SQL.

  • Аноним

    подскажите где именно в CI/CD используете docker, и насколько он помогает.

    • https://efsol.ru/ EFSOL

      Добрый день. Докер – это система контейнирезации, она используется, чтобы запаковать приложение в конейнер и потом им управлять, тиражировать и так далее. Ее использование (этой системы) зависит от Ваших гит-флоу, процессов разработки и деплоя, но самое распространенное – это использование в CI при построении имейджа приложения и потом его деплой в различные среды.

  • Аноним

    День добрый. Насколько хорошо текущая связка работает в 2023-м году? Не сменили ли компоненты на CICD? И что используете для написания и запуска Unit-тестов, указан четвёртым пунктом в процессе CI у вас в статье?

    • https://efsol.ru/ EFSOL

      добрый день.
      инфраструктура подбирается индивидуально.

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.