Добрый день, коллеги! Разрешите представиться — меня зовут Павел Бацев, я администратор сервиса ГК «Спортмастер».
Я занимаюсь системным администрированием 8 лет и уже второй год изучаю и внедряю devops-практики.
Сегодня предлагаю рассмотреть случай, который, в первую очередь, будет интересен администраторам и инженерам с парком Windows-хостов и монолитных систем.
Под катом: некоторые особенности конвейера доставки, работающего с использованием бамбуковых оконных агентов; проблемы, возникающие при использовании сеансов dsc и jea powershell в домене с устаревшим уровнем леса, и их решения; способ реализовать автоматическое тестирование пользовательского интерфейса без привлечения профессиональных тестировщиков.
Итак, посмотрим на исходные данные: У нас имеется критически важная для бизнеса информационная система, интегрированная с системой внутреннего документооборота, прикладной системой «Горячая линия Сервиса», 1С.
На момент поступления системы на поддержку у нас не было стратегии выпуска, поэтому все операции, связанные с обновлением того или иного компонента, выполнялись вручную, зоны ответственности были распределены, а четкой, взаимодополняющей работы между команды разработки, администрирования и аналитики (в качестве представителя бизнеса).
Рассматриваемая система имеет классическую монолитную архитектуру и состоит из:
- Базы данных – MS SQL;
- Веб-серверы – IIS;
- Веб-сервис – IIS;
- Планировщик рутинных задач – Служба Windows;
- Кэш — Redis, как служба Windows.
Это очень затрудняет гибкость в подходе и частоте внесения изменений.
На основе рутинных задач были выявлены операции, требующие автоматизации и выполнения в рамках одного конвейера, а также учтен задел для последующих разработок:
- Доставка сборок (сгенерированных артефактов) на целевые хосты веб-серверов;
- Кастомизация сборок путем редактирования файлов контента, параметров макета, адресов сторонних плагинов и т.д.
- Выполнение скриптов миграции утилитой (набором bat/ps скриптов) от разработчика, расположенной в теле сборки;
- Организация правильной последовательности запуска системы;
- Легкий откат при возникновении проблем с конвейером или ошибок кода.
- Масштабируемость исполнения (с ростом бамбуковых агентов, увеличением количества целевых цепей/хостов и т.д.) и унификация для различных схем (dev, test, stage, prod);
- Использование вычислительной мощности бамбуковых агентов;
- Вывод полного и читаемого лога выполнения всех шагов в ui бамбуке;
- Организация возможности запуска конвейера и первоначальной диагностики возникающих проблем командой аналитиков, а не техническим экспертом и т.п.
- Реализация системы оповещения о результатах выполнения конвейера в удобном для бизнеса инструменте: выбор пал на телеграм-канал (самая простая реализация чатопса).
Все было нормально, ядро powershell, установленное на *nix-агентах, работало нормально, но при тестировании сетевого взаимодействия возникла проблема — не обрабатывался второй тап аутентификации между хостами Windows.
Какие решения рассматривались?
Это то, что мы попробовали.
- установка библиотеки Керберос и работает аналогично Ansible для Windows;
- Применение Клиентская библиотека протокола удаленного взаимодействия Python PowerShell и его зависимые пакеты;
- используя агенты Windows бамбук.
во время кросс-платформенной работы инструментов ci/cd. Реализация конвейера доставки изменений на основе бамбуковых агентов на базе Windows прошла не без сложностей, но и проблем нет. Собственно, вот они:
- Текущий лес объявлений не поддерживает групповые управляемые учетные записи служб (gMSA);
- при использовании встроенного плагина бамбука для обработки скриптов «Script» и хранения скриптов в VCS при получении ошибок Powershell встроенный интерпретатор бамбука их не воспринимал и выполнял задачи\задачи\шаги\планы как успешные;
- Сторонний плагин «Parse Log Task» для простого анализа ошибок на основе заданных шаблонов невозможно было добавить в задачи «Проекты развертывания».
Реализованный конвейер
Давайте рассмотрим общую концепцию, инструменты и некоторые возможности.
Система контроля версий
В качестве VCS используется Bitbucket, но поскольку используется программное обеспечение с закрытым исходным кодом, в VCS хранится только набор (скрипты и конфиги) для нормальной работы конвейера.Хранение скриптов конвейера организовано в одном репозитории; контуры/тип трубопровода разделены ответвлениями.
Структура папок для всех бранчей едина.
CI/CD
Реализация всех процессов CI/CD сводится к реализации бамбукового плана сборки по причинам, выявленным в процессе разработки концепции и наличию некоторых недостатков в инструментарии Atlassian.Все шаги унифицированы и представляют собой задачу, разделенную на несколько простых задач.
Давайте рассмотрим пример шага «Сборка».
Поскольку в системе используется программное обеспечение с закрытым исходным кодом, классической сборки как таковой не существует. В рамках конвейера этот термин означает получение сборки, ее загрузку на целевой хост, обработку и настройку.
Да, отмечу, что при реализации всех шагов конвейера используется инструментарий powershell. В частности ДСК И хеа .
А поскольку возникла проблема с использованием gMSA, мы разработали концепцию использования временных шаров, срок службы которых ограничен временем выполнения конвейерной задачи.
Здесь появляются задачи с характерными особенностями «TFP» и «DelShare»:
- создание временной области на текущем агенте:
- удаление временной области на текущем агенте.
- получение кода сценария для бамбукового агента;
- создание временной области для хранения dsc;
- парсер результата задачи создания временного домена;
- выполнение основной смысловой задачи шага;
- результат парсера выполнения основной задачи;
- удаление временной области;
- парсер результата задачи по удалению временной области.
Этот конвейер является базовым и разделен на планы ветвей каждого контура, чтобы минимизировать количество отдельных идентичных планов.
В дальнейших конвейерах мы улучшили шаблоны ошибок, именование тестов, доработали/переработали ps-скрипты и внесли другие полезные изменения.
Одним из результатов стал конвейер обновления версий платформы для продуктивный контур .
Также мы реализовали пайплайны, покрывающие другие типичные задачи: обновление сущностей базы данных с помощью собственной утилиты подрядчика или утилиты от redgate; автоматическое тестирование системы пользовательского интерфейса; обновление\добавление пользовательского контента js\css; перезапуск системы непроизводительного контура; уведомления в телеграм.
Написал инструкции для группы аналитиков и провел обучающие встречи по использованию инструментов CI/CD. Также мы разработали концепцию и протестировали выполнение пайплайнов для переходов бизнес-процессов в jira\deferred Task (не обязательно, так как заказчик хотел использовать ui бамбук).
Ближайшие планы
- перенос хранилища сборок из сетевых ресурсов в Artifactory;
- после обновления леса объявлений внедрение gMSA;
- написание собственного бамбукового плагина для уведомлений в телеграмме;
- написание собственного бамбукового плагина для анализа результатов выполнения ps-скриптов из файла.
Автотестирование без профессиональных тестировщиков
Теперь об успешно реализованном кейсе по разработке и внедрению UI-автотестов с минимальными трудозатратами и инструментальной квалификацией.От предприятий были получены сценарии, описывающие бизнес-процессы, которые имели решающее значение для отслеживания.
В качестве инструментов мы взяли:
- selenium ide — как доступная и удобная платформа для создания скелета автотеста с возможностью импорта в различные языки программирования;
- selenium webdriver+node js+mocha — в виде пакета кроссплатформенных инструментов, подходящих под текущую конфигурацию и набор установленных плагинов в бамбуке;
- бамбуковые агенты Windows — в качестве тестировщиков;
- allure – как визуализатор бизнес-результатов, удобный и понятный;
- телеграм-канал - вроде простейшей реализации чатапа.
Скрипты были импортированы в js и модифицированы для работы с выбранным набором инструментов.
Полученные финальные скрипты для автотестирования пользовательского интерфейса были загружены в VCS и разбиты на контуры.
После успешного завершения конвейер выпуска, в зависимости от схемы, запускает конвейер тестирования пользовательского интерфейса.
По завершении создается артефакт с подробным журналом выполнения.
Все тесты завершены успешно
Все или часть тестов не пройдены
Плюс информация о результате отправляется в телеграм-канал, с подробным логом результатов.
Все тесты завершены успешно
Все или часть тестов не пройдены
Затем знания были переданы команде аналитиков, которые на основе сформированных скелетов и завершенных скриптов автотестирования самостоятельно проводят доработку/разработку.
Это делает возможным:
- исключить ненужные действия по настройке/проверке выполнения задач между администрацией и командой аналитики;
- повысить вовлеченность команд в общий процесс внедрения devops-практик;
- де-факто организовать прототип продуктовой команды;
- ускорить выполнение бизнес-заданий.
Теги: #Windows #Разработка сайтов #DevOps #Анализ и проектирование систем #монолит #непрерывная поставка #непрерывная интеграция #Спортмастер
-
Агентство Графического Веб-Дизайна
19 Oct, 24 -
Польский Язык
19 Oct, 24 -
Начало Научной Карьеры (Часть 5)
19 Oct, 24 -
Канобувости, 25-Й Выпуск
19 Oct, 24 -
Парк Развлечений Будущего
19 Oct, 24 -
Jimdo – Веб-Страница Для Всех, Бесплатно!
19 Oct, 24