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

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

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

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

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

  • уменьшить Time To Market
  • унифицировать процесс разработки
  • унифицировать среду разработки
  • иметь версионность кода
  • дать возможность параллельной работы разработчикам в одной конфигурации с разными фичами
  • автоматизировать тестирование среды
  • автоматически доставлять код для тестирования QA

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

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

1
Процесс написания кода в целом не отличается от стандартного.
2
Код выгружается в Git.
3
После чего запускается автоматический процесс сборки кода и его тестирования.
4
После прохождения всех тестов - код загружается в Stage-среду.
5
В Stage-среде прогоняются автотесты или тестируют QA.
6
После успешных тестов можно запустить ручной шаг - загрузки кода в Prod-среду.

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

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

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

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

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

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

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

сервер 1С
веб-сервер
сервер СУБД
SonarQube

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

  • максимально оптимизировать Dev-среду;
  • описать инфраструктуру с помощью docker-compose файла, что позволяет унифицировать все среды (в том числе и различные dev среды), а также позволяет уменьшить время на разворачивание dev среды для нового проекта;
  • в случае сбоя на dev-среде ее развертывание занимает до 10-15 минут - время на скачивание образов необходимых контейнеров.

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

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

Рисунок 3 - Схема серверной структуры для разработки 1С

После слияния кода в dev-ветку запускается процесс CI в Gitlab, который:

1
Собирает код из XML в CFE
2
Доставляет код в Dev среду
3
Запускает внутреннюю проверку в конфигураторе на проверку кода
4
Запускает Unit-тесты
5
Запускает тестирование UI

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

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

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

Рисунок 4 - Пример отчетов в Allure

Рисунок 5 - Пример отчета со скриншотом

Рисунок 6 - Пример отчетов в SonarQube

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

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

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

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



                
  • Можете описать стек технологии для среднестатистического проекта разработки 1с?
  • Добрый день, в принципе он описан в статье: git, sonar, vanessa, allure, собственно 1с и, если нужен, SQL.
  • подскажите где именно в CI/CD используете docker, и насколько он помогает.
  • Добрый день. Докер - это система контейнирезации, она используется, чтобы запаковать приложение в конейнер и потом им управлять, тиражировать и так далее. Ее использование (этой системы) зависит от Ваших гит-флоу, процессов разработки и деплоя, но самое распространенное - это использование в CI при построении имейджа приложения и потом его деплой в различные среды.

Есть вопросы?

Закажите звонок специалиста!

Есть вопросы?

Закажите звонок специалиста!
*нажимая на кнопку, Вы даете согласие на обработку персональных данных