0. Vladimir Litvinenko 2293 20.02.20 00:12 Сейчас в теме

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

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

Перейти к публикации

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

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

Далее будут примеры кода, на которых вы сможете попробовать поднять описанные механизмы самостоятельно, а не искать уже готовые где бы то ни было.
theshadowco; +1 Ответить
2. theshadowco 153 21.02.20 10:04 Сейчас в теме
4. YPermitin 8327 21.02.20 10:23 Сейчас в теме
6. hawk911 21.02.20 11:34 Сейчас в теме
Спасибо за отличную статью!
YPermitin; +1 Ответить
7. support 4475 21.02.20 12:31 Сейчас в теме
Лайк, подписка!
wowik; Vladimir Litvinenko; YPermitin; +3 Ответить
8. ponkratov 21.02.20 12:47 Сейчас в теме
Прекрасная статья! Очень подробно!
9. Olenevod 24 21.02.20 14:06 Сейчас в теме
Как здорово, что вы пишете такие большие и понятные статьи! Этого всегда не хватает когда вопрос касается сложных и непривычных вещей.
Спасибо вам!
gubanoff; petrov_2015; +2 Ответить
10. dsdred 1405 21.02.20 16:48 Сейчас в теме
11. pumbaE 633 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 2293 22.02.20 13:32 Сейчас в теме
(11) Мы же сейчас сокращаем "зоопарк" инструментов )) Для Ansible пришлось бы отдельный мануал написать )) Баткини - дёшево и сердито. Всем знакомы и каждый доработать под себя может.
12. aximo 1639 22.02.20 09:12 Сейчас в теме
ладно, не хотел задавать вопрос - но все-таки спрошу:

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

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

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

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

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

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

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

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


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


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

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

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

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


Согласен на 100%.
Vladimir Litvinenko; +1 Ответить
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Ведущий программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день

Специалист 1 категории (Программист 1С ФЗД)
Фрязино
зарплата от 110 000 руб.
Полный день

Специалист 1 категории (Программист 1С)
Фрязино
зарплата от 110 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Специалист линии консультаций 1С
Санкт-Петербург
Полный день