Собираем образ виртуальной машины с PostgreSQL и платформой 1С. Цикл "Многопоточный CI для 1С c Packer, Vagrant и Jenkins", часть 2

0. Vladimir Litvinenko 2355 28.02.20 07:56 Сейчас в теме
Автоматизируем установку и конфигурирование Linux, PostgreSQL, 1C, Apache, Java с возможностью выбора версий дистрибутивов. Упаковываем результат в образ виртуальной машины.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. YPermitin 8969 28.02.20 08:13 Сейчас в теме
(0) материал как всегда на высоте!
2. Vladimir Litvinenko 2355 28.02.20 09:31 Сейчас в теме
(1) Юрий, спасибо за оценку!

Если будете применять и возникнут сложности - напишите. Сейчас все эти механизмы отработаны только на трёх физических машинах. Могут быть какие-то специфические проблемы. Хотя это скорее к развёртыванию через Vagrant относится и настройке сети, в плане Packer главное через boot_command пробраться ;))
YPermitin; +1 Ответить
3. YPermitin 8969 28.02.20 10:07 Сейчас в теме
(2) думаю, что поле экспериментов очень большое. Нало время, чтобы в это " вкурить" и набить шишек. Но обратная связь будет :)
4. check2 125 28.02.20 10:16 Сейчас в теме
Владимир, какой у Вас стаж работы с Linux? Просто интересно. У меня маленький - год с небольшим. Начал плотно заниматься ubunto'й где то с конца 2018 года. Думал, что много уже умею, но беглое прочтение показалось для меня тяжёлым, некоторые фрагменты на уровне китайской грамоты :). Понимаю, что опыт, который получен мною более чем за год работы с этой осью более чем недостаточен для лёгкого понимания материала, в качестве которого не сомневаюсь ни разу. Но для неподготовленных будет совсем тяжело... Ну ладно, это лирика.
У меня вопрос почему именно Ubuntu Server, а потом к ней + Гном? На сайте убунты есть три варианта дистрибутива: сервер, деск-лайт и деск-фулл. Почему не взяли второй вариант? Я вот его например его, в основном и использую. И даже вариант деск-фулл может установить минимум к графической оболочке (он после установки просто сносит ненужные пакеты)
И ещё вопрос У Вас в статье акцентировано внимание на блокировки отключения дисплея. Что будет если пропустить этот шаг? Почему спрашиваю, сам неделю назад, развернул на Убунте сервер тестирования на базе VA. Скрины делаются, тесты гоняются, не работает лишь Sikullix, но вроде как и не должен был. Причём всё это работает успешно при включенной заставке, и погашенном экране. НО я поднимал на убунте xRDP. Т.е. я просто один раз логинюсь и отключаю RDP… Вы так не пробовали?
ЗЫ некоторые картинки не видны в статье... см. снимок ниже
Прикрепленные файлы:
5. Vladimir Litvinenko 2355 28.02.20 11:03 Сейчас в теме
(4)
какой у Вас стаж работы с Linux? Просто интересно. У меня маленький - год с небольшим.

Примерно полгода использую для построения CI. Год назад ещё писал, что побаиваюсь его )) Но "жизнь заставила" )) Точнее отсутствие выделенных виртуальных серверов достаточной мощности, которые ранее позволяли через сеансы RDP запуск узлов Jenkins делать. Плюс хотелось добиться независимости от "облаков", где бы они не находились, переносимости всех механизмов между маломощными машинами и сделать описание инфраструктуры для CI именно через код.

Также очень помогли материалы Кирилла Семаева, замечательный преподаватель, посмотрите, пожалуйста, его видео, они всё делают проще )) https://www.youtube.com/user/itsemaev

почему именно Ubuntu Server, а потом к ней + Гном?

Причины выбора таких инструментов рассматривались в первой части: https://infostart.ru/public/1198035/
Главная причина - доступность более широкому кругу специалистов. По той же причине например батники используются - они большинству понятны. И мне тоже их проще править и понимать.

сервер, деск-лайт и деск-фулл. Почему не взяли второй вариант?

Да просто не рассматривал его. Взял самый легкий вариант и поставил всё по минимуму. Рассматриваемые механизмы не идеальны и есть много способов их улучшения. В статье даже есть рекомендация LXDE использовать. Надеялся даже вообще без GUI обойтись для операций с хранилищем, но оказалось, что Конфигуратор требует GUI даже при работе через CLI.

Вас в статье акцентировано внимание на блокировки отключения дисплея. Что будет если пропустить этот шаг? Почему спрашиваю, сам неделю назад, развернул на Убунте сервер тестирования на базе VA. Скрины делаются, тесты гоняются, не работает лишь Sikullix, но вроде как и не должен был. Причём всё это работает успешно при включенной заставке, и погашенном экране. НО я поднимал на убунте xRDP.

Думаю здесь ключевой момент - именно RDP. Почему вместо RDP в этот раз используется набор отдельных машин тоже в первой части постарался рассмотреть. Но ничто не мешает его использовать и даже с большими плюсами для скорости выполнения сценариев. С очисткой ресурсов при многопоточном тестировании и заменой ПО по желанию - уже будет сложнее. По крайней мере мне так показалось, когда пробовал.

некоторые картинки не видны в статье...

Проверьте пожалуйста с другого устройства. Если это так, то напишу в поддержку. У меня просматривается с телефона и двух машин. Картинка, которая у Вас не подгрузилась - это гифка, может быть по этому? Вот прямая ссылка: https://infostart.ru/upload/iblock/35c/35c3018cbd864a6348432666a63ff5c4.gif
Gif-анимации не запрещены в браузере?
6. check2 125 28.02.20 12:59 Сейчас в теме
(5)
но оказалось, что Конфигуратор требует GUI даже при работе через CLI.

Неожиданно, что саппорт говорит на этот счёт?

(5)
Почему вместо RDP в этот раз используется набор отдельных машин тоже в первой части постарался рассмотреть.
Наверное вы не поняли, я имел ввиду, что у меня в сеансе так же висит runner, как я понял у Jenkins он свой, но так же как и GL-runner позволяет запускать под пользователем, либо как службу. Вот первый вариант я и использую...

(5)
С очисткой ресурсов при многопоточном тестировании и заменой ПО по желанию - уже будет сложнее.

Я не знаю, фича это самого gitlab'a, либо runner'a но многопоточность с одним раннером у меня получилась только если разные проекты... Т.е. один runner несколько проектов одновременно может обслуживать, а вот сборки (в данном случае речь о тестировании VA) в пределах одного проекта не получается. Коммиты на обработку выстраиваются в очередь. Однако, если для одной убунты запустить 2 RDP под разными УЗ, то можно запустить 2 раннера, и тогда 2 комита последовательных будут обрабатываться на одной машине... Главное, чтобы ресурсов хватило, мы когда виртуалку размещали специально не выбирали мощную, чтобы тестирование проходило в условиях приближенных к реальным пользователям.

(5)
Проверьте пожалуйста с другого устройства.

Гифку к ответу - вижу без проблем, и другие виду в статье. Пробовал другой браузер IE тоже самое
Вот пример с другого компа Linux FF
Прикрепленные файлы:
Vladimir Litvinenko; +1 Ответить
8. Vladimir Litvinenko 2355 28.02.20 17:27 Сейчас в теме
(6)
некоторые картинки не видны в статье...
Пробовал другой браузер IE тоже самое

Спасибо большое за найденную ошибку с картинками! Удалось воспроизвести на Firefox. Это рудименты, оставшиеся от переноса из Google Docs - ссылки на несуществующие картинки в тегах <img>. Очистил от них публикацию.

Я не знаю, фича это самого gitlab'a, либо runner'a но многопоточность с одним раннером у меня получилась только если разные проекты... Т.е. один runner несколько проектов одновременно может обслуживать, а вот сборки (в данном случае речь о тестировании VA) в пределах одного проекта не получается.

К сожалению не могу подсказать по функциональности Gitlab CI, пока только думаю над тем, чтобы начать его изучать (уж очень популярен и по отзывам хорош).

С Jenkins единственные проблемы - это конкуренция за GUI и активное окно (при работе в одном сеансе) и нарушение стабильности связи между тест-менеджером и тест-клиентом (при работе на одной машине).

При наличии нескольких сеансов RDP конкуренции за GUI не возникает. Раньше, когда разворачивал механизмы на Windows получалось настраивать работу в двух сеансах одновременно и ошибки возникали редко. Да и в телеграм канале https://t.me/testspro1c читал, что у коллег получалось с RDP так же делать и с большим количеством сеансов. Сеансы RDP конечно при этом должны быть разными и должен быть настроен интерактивный запуск агента Jenkins при логоне, чтобы взаимодействие с рабочим столом было и экран не гасился.

Один узел Jenkins (процесс) с несколькими сборщиками (потоками) также вполне хорошо справлялся с несколькими задачами (может быть их можно назвать и разными проектами). При условии что только одна из этих задач приводит к открытию окон. То есть на одном узле (одним процессом) можно одновременно выполнять сценарное тестирование и выгружать конфигурацию в git. Но для каждой задачи будет создан свой поток (сборщик).

но так же как и GL-runner позволяет запускать под пользователем, либо как службу. Вот первый вариант я и использую..

Да, Jenkins аналогично должен работать. Запуск должен выполняться под подльзователем - через автологон или другой аналогичный способ запуска. Здесь можно спокойно применить как несколько сеансов RDP, в каждом из которых запускается агент (c Jenkins это получается), так и разные виртуальные машины.


Просто если я в виртуальных машинах не запрещаю блокирование экрана, то либо тесты отваливаются, либо в случае ошибок скриншот делается с экраном блокировки, а не с окнами, в которых возникла ошибка тестирования. Поэтому много внимания в статье уделил настройки постоянной доступности рабочего стола - чтобы экран не гас и не блокировался.

PS: Надеюсь не запутал и говорю о том, о чём Вы спросили )) Просто при работе с другим сервером CI действительно есть риск не понять в чём сложность заключается.
11. check2 125 29.02.20 20:45 Сейчас в теме
(8)
нарушение стабильности связи между тест-менеджером и тест-клиентом (при работе на одной машине).

Наверное никто от такого не застрахован.

(8)
Надеюсь не запутал и говорю о том, о чём Вы спросили ))

Нет не запутали :)

Спасибо за ответы!
7. Pr-Mex 125 28.02.20 14:47 Сейчас в теме
Как обычно очень подробно и понятно. Спасибо!
Vladimir Litvinenko; YPermitin; +2 Ответить
9. pumbaE 635 28.02.20 18:01 Сейчас в теме
Давно пользуюсь готовыми шаблонами от мастеров https://github.com/chef/bento/tree/master/packer_templates
10. Vladimir Litvinenko 2355 28.02.20 18:16 Сейчас в теме
(9) Буду рад внести изменения в репозиторий со следующим коммитом, если есть идеи как улучшить текущий шаблон для Packer. У меня вообще получилось так, что сначала для Windows Server 2019 всё написал. А потом, когда увидел сколько ресурсов на это надо и что лишился переносимости CI, переписал на основе этих шаблонов механизмы под Ubuntu Server. Указанный репозиторий тоже изучу, в нём есть пример для Ubuntu 19.10.
Оставьте свое сообщение
Вопросы с вознаграждением