Кому это нужно
Команде от трёх программистов 1С, которые дорабатывают одну конфигурацию и упираются в хранилище: захваты объектов, очередь на помещение, срочная правка смешивается с недоделанной задачей, ревью кода нет. Чаще всего это ИТ-отдел компании с типовой УТ, ERP или Бухгалтерией и заметным слоем своих доработок.
Если программист один, проект такого масштаба не нужен. Выгрузки в XML и пары скриптов ему хватит, это мы бесплатно подскажем в WhatsApp.
Что ломается при переходе и что мы с этим делаем
Инструменты для git в 1С бесплатные и давно работают. Затыки начинаются, когда их собирают в процесс для живой команды. Их список известен заранее, поэтому правила под каждый ставим до первого конфликта.
| Что ломается | Почему | Что делаем |
|---|---|---|
| ConfigDumpInfo.xml конфликтует при каждом слиянии | служебный файл выгрузки, у каждого программиста свой | на аудите решаем, хранить его или пересобирать хуком: от этого зависит выгрузка только изменённого |
| Form.xml при параллельной правке одной формы | идентификаторы элементов у двух веток совпадают | правило “одна форма в одной ветке” и хук, который ловит дубли индексов |
| Выгрузки от разных программистов не совпадают | формат выгрузки меняется с версией платформы | одна версия платформы для выгрузки у всей команды, CI это проверяет |
| git слил без конфликта, а база не загружается | git сливает строки, 1С проверяет объект целиком | CI загружает ветку в тестовую базу до слияния в основную |
| Выгрузка большая, загрузка долгая | у крупных конфигураций XML весит больше гигабайта | частичная выгрузка и загрузка только изменённых файлов |
Что у нас за плечами
Свою разработку мы ведём в git без хранилища и без EDT. Больше пятидесяти внешних обработок и несколько расширений лежат исходниками XML, обработка собирается из файлов скриптом, история каждой правки видна построчно. Как мы храним и описываем внешние обработки, разобрано в статье про хранение внешних обработок 1С.
Конфигурацию заказчика силами целой команды через git мы пока не переводили, и выдумывать такой кейс не будем. Поэтому услуга устроена как настройка процесса: правила, хуки и проверки ставим заранее, первые слияния проходим вместе с вашими программистами, хранилище выключаем только тогда, когда слияния перестали удивлять.
На каких инструментах
Всё на открытых проектах сообщества 1С, лицензий покупать не придётся:
- gitsync переносит историю хранилища в git на переходный период;
- vanessa-runner собирает cf, cfe и epf и загружает ветку в базу из скриптов;
- BSL Language Server проверяет код на каждый merge request;
- precommit4onec разбирает внешние обработки в исходники при коммите и чинит индексы форм;
- YAxUnit подключаем, если команда готова писать тесты.
Своего закрытого софта не ставим, процесс остаётся у вас и работает без нас. GitLab или GitHub выбираете вы. Если код нельзя выносить наружу, работаем с GitLab на вашем сервере.
Для CI нужна тестовая база, близкая к рабочей. Если её нет или она отстала, пригодится наш инструмент для тестовой базы из бэкапа. А совместимость внешних обработок с новым релизом типовой отдельно проверяет бесплатная обработка, про её устройство есть статья.
Что не делаем
- Миграцию на 1С:EDT под ключ. Весь процесс строим на конфигураторе и XML-выгрузке. EDT под крупную конфигурацию просит 16 ГБ памяти и долгие сборки, и большинство команд по этой причине остаются в конфигураторе.
- Тесты за команду. Фреймворк подключим и поставим его запуск в CI, а покрытие тестами пишут ваши программисты или оцениваем отдельно.
- Обновление рабочей базы из ветки без человека. Обновление рабочей базы требует остановки и прав, поэтому кнопку оставляем у ответственного. CI готовит сборку и проверяет её на тестовой базе.
Сроки и цена
Аудит, репозиторий с синхронизацией хранилища, правила веток и сборка в CI для одной конфигурации занимают 5-7 рабочих дней. Это вход по нашей общей схеме: экспресс-аудит бесплатный, дальше платная работа по вилке в шапке страницы.
Перенос команды идёт неделями в рабочем ритме: программисты продолжают закрывать свои задачи, только уже в ветках. Сопровождение первых слияний и выход из хранилища оцениваем по итогам аудита и выставляем единым счётом с основной работой, без отдельных платежей по ходу.