0. Vladimir Litvinenko 2295 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 2295 21.02.20 11:02 Сейчас в теме
(1) "Бойтесь своих желаний" )) Не во всех компаниях Вас включат в процесс разработки CI, а не просто дадут посмотреть со стороны. Есть распространенное мнение, что программист должен отчеты и расширения делать, а не в сторону CI смотреть. И то, что CI есть на отдельном проекте, ещё не значит, что он есть в компании. Поэтому и хотелось бы дать решение, пригодное для включения в разработку более широкого круга специалистов ))

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

Далее будут примеры кода, на которых вы сможете попробовать поднять описанные механизмы самостоятельно, а не искать уже готовые где бы то ни было.
theshadowco; +1 Ответить
2. theshadowco 153 21.02.20 10:04 Сейчас в теме
4. YPermitin 8354 21.02.20 10:23 Сейчас в теме
6. hawk911 21.02.20 11:34 Сейчас в теме
Спасибо за отличную статью!
YPermitin; +1 Ответить
7. support 4476 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 1406 21.02.20 16:48 Сейчас в теме
11. pumbaE 634 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 2295 22.02.20 13:32 Сейчас в теме
(11) Мы же сейчас сокращаем "зоопарк" инструментов )) Для Ansible пришлось бы отдельный мануал написать )) Баткини - дёшево и сердито. Всем знакомы и каждый доработать под себя может.
12. aximo 1653 22.02.20 09:12 Сейчас в теме
ладно, не хотел задавать вопрос - но все-таки спрошу:

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

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

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

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

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

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

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

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


Что касается "дорого" - то это скорее про другую часть, относящуюся к процессу постановки задач. Потому что постановкой задач часто занимаются технически некомпетентные и не склонные к порядку люди. Поэтому здесь затык возникает. Да такой, при котором делай CI или не делай, а ошибки всё равно будут в продуктиве. Этот вопрос постарался подробно раскрыть в грустном разделе "вопрос применимости" ))
17. grumagargler 650 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 41 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 категории (Методист-аналитик 1С)
Фрязино
зарплата от 100 000 руб.
Полный день

Главный архитектор 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С
Новороссийск
зарплата от 70 000 руб.
Полный день

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

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