Многопоточный CI-контур для 1С c Packer, Vagrant и Jenkins. Часть 1. Описание системы и обзор инструментария

13.03.20

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

Строим CI-контур для 1С. Теория и практика.


 

Что и для чего мы будем делать?

Будет ли здесь что-то кроме CI?

Исходные коды

Технические требования

Что нужно от читателя?

Архитектура систем

Вопрос применимости

Что будем понимать под "многопоточностью"?

Структура CI

Обзор инструментов

Конфигурирование хостовой машины

Следующие части цикла "Многопоточный CI-контур для 1С":

2.  Собираем образ виртуальной машины с PostgreSQL и платформой 1С

3.  Разворачиваем узлы CI через Vagrant, строим сеть из виртуальных машин

4.  Jenkins: конфигурируем сервер и подключаем к нему виртуальные машины

5. Пайплайны Jenkins - программирование и настройка. Загружаемые модули

 

Что и для чего мы будем делать?

 

Эта статья открывает цикл публикаций, в котором будет подробно рассмотрено построение среды для непрерывной интеграции (Continuous Integration или CI). Как и в случае предыдущего цикла, посвященного написанию сценарных тестов, целью данных публикаций будет не только описать основные идеи или похвастаться скриншотами, но и дать инструкции, описать архитектуру системы и показать приемы для её воспроизведения. Результатом будет работающий код и руководство по его использованию.

Мы будем стремится достичь максимальной автоматизации и получить систему, рабочие узлы которой можно развернуть и запустить с минимальным количеством ручных действий. Наш CI-контур должен удовлетворять не только критерию "непрерывная сборка и тестирование" для систем на 1С, но и "инфраструктура как код", позволяя воспроизводить себя на разных хостах и относительно быстро заменять компоненты системы.

Это согласуется с   технической составляющей  DevOps-подхода, важными частями которого являются CI и концепция "инфраструктура как код".  Идея заключается в следующем. Всё, что требует сочетания таких качеств как скорость, повторяемость, надежность, не может и не должно выполняться как ручное рутинное действие, даже если воп

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

CI QA Automation Jenkins Packer Vagrant Тестирование

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

DevOps и автоматизация разработки Программист 1С 8.3 1С:Управление торговлей 11 Россия Бесплатно (free)

Полный цикл разработки расширения 1С в пакетном режиме DESIGNER: выгрузка, правка, гейт компиляции, применение к базе и контроль результата — без единого клика в конфигураторе. Разбираю семь мин, на которых подорвался лично: почему LoadConfigFromFiles возвращает нулевой код на битом модуле, зачем нужен Xvfb, как pgrep находит сам себя, кто держит базу и как отличить работающий сеанс от забытого, и почему после рестарта сервера база остаётся закрытой. Платформа 8.3.27, УТ 11.5, сервер на Linux.

вчера в 10:30    644    YA_2159986692    3    

7

Интеграция Нейросети DevOps и автоматизация разработки Распознавание документов и образов 1C:ERP 1С:КА 1С:УНФ Химическая промышленность Горнодобывающая промышленность Металлургическая промышленность Россия Платные (руб)

От чертежа до себестоимости — за минуты, а не дни. ИИ-Технолог автоматически распознаёт чертежи и техническую документацию (включая фото, сканы, PDF, Excel), рассчитывает нормы времени, формирует технологические маршруты, оценивает возможность изготовления и точную себестоимость. Интеграция с 1С (ERP, MES, КА, УНФ) и отраслевыми нормативами (ГОСТы).

366000 руб.

18.06.2026    1279    0    2    

0

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

Технический разбор нашего конвейера разработки на 1С: песочницы, Gitea, сборка, проверки и CLI backend'ы. Основной CLI - cursor; также поддерживаются codex, claude и экспериментальный mimo.

16.06.2026    5198    Aleksandr    5    

8

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

Использование современных DevOps-практик в разработке и сопровождении активно внедряется в стек 1С. Мы в MagnitTech активно используем Docker, в том числе и для контейнеризации 1С-приложений, что позволяет ускорить развертывание, улучшить отказоустойчивость и упростить масштабирование. Рассмотрим лучшие практики создания Dockerfile и нюансы работы в контейнере для сервера приложений и сервера взаимодействия 1С – с какими сложностями мы столкнулись и как их преодолели.

26.05.2026    3000    daniloffartur    1    

5

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

Хватит ограничивать себя родным и уютным стеком 1С. Пора расширять кругозор и осваивать смежные стеки! Разберемся, как Docker может упростить жизнь одинэснику: от сборки и тестирования 1С до запуска инфраструктуры и автоматизации CI/CD, причем быстро, воспроизводимо и без лишнего мусора в системе.

08.05.2026    6048    sleemp    81    

37

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

Статья о том, как команда 1С смогла перейти от ручного управления к полноценной автоматизации, внедрив практики DevOps в среде 1С. Разбираем проблемы, которые мешали развиваться: медленный процесс командной разработки, отсутствие тестирования, длительные релизы, хаос с хотфиксами и ручные действия на каждом этапе. Объясняем, как внедренные решения – GitLab, Jenkins, автоматизированные пайплайны, тестовое окружение, стандарты разработки и тестирования – позволили масштабировать команду и повысить стабильность поставок.

14.04.2026    2579    Sicuro    4    

3

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

Практический гайд по применению DevOps-практик в 1С-инфраструктуре: контейнеризация СУБД, инфраструктура как код, мониторинг с алертами, автоматические бэкапы. Разбираю подводные камни и делюсь готовыми конфигами. Для 1С-разработчиков, которые хотят автоматизировать рутину и приблизиться к продакшен-среде.

06.04.2026    14449    vladimir-89    12    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. krollzlat 21.02.20 09:51 Сейчас в теме
Еще бы список работодателей у кого настроен многопоточный CI-контур. Работал с gitoм, немного ванессой- очень понравилось, чувствуешь себя прям разработчиком.
sleemp; YPermitin; +2 Ответить
3. theshadowco 269 21.02.20 10:04 Сейчас в теме
(1) насколько многопоточный интересует?
5. Vladimir Litvinenko 2944 21.02.20 11:02 Сейчас в теме
(1) "Бойтесь своих желаний" )) Не во всех компаниях Вас включат в процесс разработки CI, а не просто дадут посмотреть со стороны. Есть распространенное мнение, что программист должен отчеты и расширения делать, а не в сторону CI смотреть. И то, что CI есть на отдельном проекте, ещё не значит, что он есть в компании. Поэтому и хотелось бы дать решение, пригодное для включения в разработку более широкого круга специалистов ))

В то же время наличие CI налагает дополнительные требования к процессу разработки и они довольно "тяжёлые". Если окажется что от Вас требуется больше дисциплины, но полноценно в процесс вы не погружены, а продолжаете делать то же самое, что и раньше, но сложнее, то будет ли это так же интересно? ))

Далее будут примеры кода, на которых вы сможете попробовать поднять описанные механизмы самостоятельно, а не искать уже готовые где бы то ни было.
distorshion; adapter; theshadowco; +3 Ответить
2. theshadowco 269 21.02.20 10:04 Сейчас в теме
4. пользователь 21.02.20 10:23
(0) отличный мануал!
6. hawk911 21.02.20 11:34 Сейчас в теме
Спасибо за отличную статью!
YPermitin; +1 Ответить
7. support 4484 21.02.20 12:31 Сейчас в теме
Лайк, подписка!
wowik; Vladimir Litvinenko; YPermitin; +3 Ответить
8. ponkratov 21.02.20 12:47 Сейчас в теме
Прекрасная статья! Очень подробно!
9. Olenevod 36 21.02.20 14:06 Сейчас в теме
Как здорово, что вы пишете такие большие и понятные статьи! Этого всегда не хватает когда вопрос касается сложных и непривычных вещей.
Спасибо вам!
abcopel; gubanoff; petrov_2015; +3 Ответить
10. dsdred 4276 21.02.20 16:48 Сейчас в теме
11. pumbaE 21.02.20 18:17 Сейчас в теме
наступный этап ansible ...
$ ansible-playbook -i hosts developers.yml --tags choco

PLAY [all] **********************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************
ok: [10.50.0.7]

TASK [choco : install multiple packages] ****************************************************************************************************************************************************************************************************
ok: [10.50.0.7] => (item=7zip.install)
ok: [10.50.0.7] => (item=git)
ok: [10.50.0.7] => (item=7zip)
ok: [10.50.0.7] => (item=visualstudiocode)
ok: [10.50.0.7] => (item=curl)
ok: [10.50.0.7] => (item=wget)
ok: [10.50.0.7] => (item=nssm)
ok: [10.50.0.7] => (item=gitextensions)
ok: [10.50.0.7] => (item=git-credential-manager-for-windows)
ok: [10.50.0.7] => (item=nircmd)
ok: [10.50.0.7] => (item=kdiff3)

TASK [choco : install irfanview] ************************************************************************************************************************************************************************************************************
changed: [10.50.0.7]

TASK [choco : install multiple packages for behavior tests] *********************************************************************************************************************************************************************************
ok: [10.50.0.7] => (item=imagemagick.app)
ok: [10.50.0.7] => (item=jdk8)

TASK [choco : config git quotepath] *********************************************************************************************************************************************************************************************************
changed: [10.50.0.7]

TASK [choco : config git longpaths] *********************************************************************************************************************************************************************************************************
changed: [10.50.0.7]
Показать
14. Vladimir Litvinenko 2944 22.02.20 13:32 Сейчас в теме
(11) Мы же сейчас сокращаем "зоопарк" инструментов )) Для Ansible пришлось бы отдельный мануал написать )) Баткини - дёшево и сердито. Всем знакомы и каждый доработать под себя может.
12. aximo 2734 22.02.20 09:12 Сейчас в теме
ладно, не хотел задавать вопрос - но все-таки спрошу:

если не сложно возможно привести примеры из практики в рамках платформы 1с, где применялась данная методика слиянии рабочих копий в общую основную ветвь разработки - это же эта методика???
13. Vladimir Litvinenko 2944 22.02.20 13:16 Сейчас в теме
(12) Если не хотели, то зачем задавать? Не нужно себя заставлять ))

Вы наверное спрашиваете про ту схему на которой изображён общий процесс и описана подготовка релиза. Эта схема вообще к теме CI имеет слабое отношение и приведена здесь для демонстрации места CI в общем процессе. Чтобы не возникало идеи, что "вот сейчас дымовые автотесты сделаем и заживём хорошо" )) Просто при изучении материалов на эту тему часто возникает ощущение, что роль CI преувеличивается. В то время как эти механизмы тихо умрут в уголочке или просто не принесут много пользы, если не подкрепить их чем-то большим.

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

Вместо хранилища здесь может быть вообще CF-файлы, которые передают не имеющие доступа к сети предприятия и временно нанятые для решения отдельных задач ребята из франчайзи (если организация полувоенная, то это нормально). Главное чтобы потом все изменения были слиты в хранилище. Это же по сути та самая "разветвленная разработка" только без хранилища под каждую задачу - просто разные CF-ники берем и объединяем. А хранилище - чтобы знать какая версия безопасна и может в релиз переноситься.

Тут же всё просто и складывается из элементарных действий: захват, осовбождение объектов, сравнение/объединение. Другое дело, что возиться с этим может ни у кого не возникнуть желания. Или времени просто на это не будет выделено из-за нехватки рабочих рук на кодинг, и будет обычный такой бардак ;)) А сейчас же везде нехватка рук на кодинг + лозунг "дёшево и всерьёз".

Возможна и альтернативная схема, когда объекты хранилища освобождаются сразу как переданы в тестирование. При этом списки измененных объектов можно учитывать в привязке к задачам. И если в задаче есть непротестированный объект, то объекты по всем остальным задачам, где он присутствует, также не забираются в релиз. Здесь больше автоматизации возможно. Процесс разработки при этом не тормозится, но есть риск не выпустить в релиз какую-то задачу, так как в связанные с ней объекты влезли несколько раз по разным задачам и не всё ещё проверено. Хорошая схема, но не я работая в ней сам не релизил, поэтому тонкостей не расскажу. Система учета задач кстати на 1С была написана ))
15. aximo 2734 22.02.20 13:57 Сейчас в теме
(13) спасибо за ответ. вы знаете - вот выглядит как раз "дорого"
16. Vladimir Litvinenko 2944 22.02.20 14:15 Сейчас в теме
(15) Просто стрелочек на схеме много и составляющих блоков. Иначе не придумал как описать процесс "в динамике" когда есть последовательность задач. Многие такие схемы выглядят сложнее, чем есть на самом деле.

И конечно нужен человек, который будет переносить изменения в релизную конфигурацию или релизную ветку гита. Собственно весь гитхаб так работает, а мы про "деревянные" инструменты 1С говорим. Здесь всё ещё проще. При ручном выполнении действий, конечно. В плане автоматизации всё сложнее ))

Кстати это не обязательно должен быть один человек, достаточно чтобы сотрудник понимал этот простой процесс, это может быть и каждый член команды разработки. Есть ещё сложность с тем, чтобы корень конфигурации надолго не захватывать. Для этого надо объекты-пустышки создавать сразу и сразу освобождать. А при освобождении объектов в этой схеме обязателен перенос в релизную конфигурацию. Но это издержки "деревянного" хранилища 1С. В телеграмм-каналах всё чаще коллеги пишут что уже целиком на git перешли. Я правда пока не понимаю как с конфигурацией размера ERP и текущим количеством людей на рынке 1С, знакомых с git, это в принципе возможно.


Что касается "дорого" - то это скорее про другую часть, относящуюся к процессу постановки задач. Потому что постановкой задач часто занимаются технически некомпетентные и не склонные к порядку люди. Поэтому здесь затык возникает. Да такой, при котором делай CI или не делай, а ошибки всё равно будут в продуктиве. Этот вопрос постарался подробно раскрыть в грустном разделе "вопрос применимости" ))
17. grumagargler 757 22.02.20 17:32 Сейчас в теме
(15)
ибо за ответ. вы знаете - вот выглядит как раз "дорого"


Трюк в том, что нам ведь всё равно это приходится делать, только вручную: собирать конфигурации, окружение, тестировать. А CI/CD о том, чтобы это атоматизировать, в результате чего появляется непрерывность. С edt и без хранилищ приемлемый ci-cd контур можно создать за полчаса-час (исключая время за выгрузки/загрузки и создание вм).
18. infosoft-v 1110 23.02.20 08:55 Сейчас в теме
Нам потребуются такие утилиты как tee, gpep, tr, sed, rm

Наверное опечатка и должно быть grep
Vladimir Litvinenko; +1 Ответить
19. dock 45 25.02.20 00:08 Сейчас в теме
" Crucible + Fisheye + Jira + Confluence " -

DevProm не рассматривали ?
не сочтите за рекламу, просто сам сейчас "копаю" именно в сторону DevProm
20. Pr-Mex 187 27.02.20 14:49 Сейчас в теме
Отличная статья!

Также, я бы не рекомендовал при наличии качественной информации на тему сценарного тестирования начинать с дымовых тестов. Видел уже две компании, где на этом путь в CI и был закончен, с постановкой той самой булшит-галочки "автотестирование у нас уже есть", хотя на самом деле его не было и в помине. Сделайте то, что действительно проверяет работу пользователя, а дым как раз лучше оставить на потом. Хотя это конечно мой личный опыт, и если Вы считаете, что нет риска остановиться на полпути, то этот совет можно пропустить.


Согласен на 100%.
Vladimir Litvinenko; +1 Ответить
21. ITSun 27.07.20 11:34 Сейчас в теме
22. moolex 905 13.04.24 09:10 Сейчас в теме
Не создавайте сущности сверх необходимости.
Используйте Внешний регламент для 1С.
Один раз подключили расширение и работаем с внешними модулями.
Одна общая папка с модулями, одна папка для бекапов.
Просто и прозрачно.
Для отправки сообщения требуется регистрация/авторизация