В этой статье расскажу о нашей текущей технологии разработки, которую мы применяем на проектах внедрения 1C:ERP.
Домашний ПК или виртуальная машина?
Для каждого разработчика и консультанта предусмотрена отдельная виртуальная машина. Доступ к машине осуществляется через удаленный рабочий стол. Использование виртуальных машин позволяет:
- Отделить домашние дела от рабочих, что особенно важно при удаленной работе.
- Использовать пайплайны для типовых операций - развертки баз, установки ПО, запуска сборок, тестирования и т.д.
- Повысить стабильность инфраструктуры - разработчику достаточно подключиться к рабочей машине, настройка ПО выполняется централизовано.
В настоящий момент рабочие машины переводятся на ОС Linux. Соответственно, сама разработка ведется либо в конфигураторе, либо в EDT под Linux.
По моим наблюдениям EDT под ОС Linux работает стабильнее. О выявленных ошибках мы оперативно информируем фирму 1С.
Хранилище или Git?
Для версионирования кода на всех проектах используется Git. Разработка по задачам выполняется в отдельных ветках, а помещение в мастер через пул-реквесты. Для помещения изменений в мастер ветку требуется:
- Code review от другого разработчика.
- "Зеленый" сонар, проверка автоматически запускается при создании пул-реквеста.
- "Зеленые" автотесты, тесты запускаются на ветке, в которой велась разработка.
После каждого пройденного пул-реквеста автоматически выполняется сборка, в результате создаются соответствующие cf и cfe файлы.
Таким образом, хранилище 1С, несмотря на его простоту, стабильность и прочие кажущиеся преимущества не используется.
Конфигуратор или EDT?
В настоящий момент один проект полностью переведен на EDT, на остальных проектах используется конфигуратор. Поскольку EDT сама по себе является GIT клиентом, порядок работы при использовании конфигуратора и EDT различается.
При использовании конфигуратора:
- При старте работы над новой задачей требуется запустить скрипт создания базы разработки на основании текущей конфигурации мастера.
- При окончании разработки требуется запустить скрипт для помещения конфигурации в новую (или существующую) ветку.
- В Git анализируются изменения, проводится code review, запускаются тесты.
- При наличии замечаний ревьювера или Сонара код может быть изменен в конфигураторе, изменения снова помещаются в ветку скриптом.
- При обнаружении изменений кода в мастере (дважды измененные объекты) требуется скачать файлы из последней сборки и перенести изменения в свою ветку, после этого снова запустить скрипт помещения изменений в ветку.
При использовании EDT:
- Средствами EDT создается новая ветка.
- В новой ветке ведется разработка.
- При необходимости можно обновить свою ветку разработки до состояния мастера.
- На отдельной ветке так же выполняется сode review, проверки Сонаром.
- Ветка помещается в мастер через пул-реквест.
- После каждого пул-реквеста автоматически запускается сборка.
Обновление рабочих баз выполняется с помощью cf и cfe файлов вручную.
Здесь следует отметить, что на момент написания данной статьи конфигуратор под ОС Linux работает крайне не стабильно: система внезапно зависает или сильно тормозит. Таким образом, сейчас связка конфигуратор + Linux вызывает массу неудобств. По нашим обращениям зарегистрированы ошибки:
https://bugboard.v8.1c.ru/error/000135195
https://bugboard.v8.1c.ru/error/000131177
Расширение или изменение конфигурации?
Все доработки типовой конфигурации выполняются в отдельном расширении. Это позволяет локализовать все доработки, сохранить типовую конфигурацию без изменений и увеличивает скорость сборки.
При этом, добавление новых ссылочных объектов в расширение имеет ряд ограничений (например, объект из расширения нельзя добавить в определяемый тип). Поэтому ссылочные объекты мы сначала добавляем в основную конфигурацию, а реквизиты, табличные части и обработчики к этому объекту добавляются в расширение.
Заключение
Мы считаем перспективным использование EDT и GIT вместо конфигуратора и хранилища поскольку это позволяет реализовать современные подходы для разработки на 1С:
- code review и анализаторы кода на отдельных ветках до помещения в мастер,
- прослеживаемость изменения кода от задачи до коммитов и обратно,
- автоматическое тестирование и автосборки.
Переход на Linux - это скорее вынужденная мера, однако в связке с EDT это работает с приемлемым качеством.
Материал подготовил:
Алексей Тачеев, Product Owner, БИТ:ERP.
Поддержите нас лайками, если материал статьи оказался полезным для вас. Все новости и материалы в нашем телеграмм-канале https://t.me/bit_erp.