Top.Mail.Ru
 

Разработка Jenkins-плагина для управлением инфраструктурой в Яндекс.Облаке

Продукт:

В облачной инфраструктуре сборки, требующие больших вычислительных ресурсов, выполняются на мощных виртуальных машинах, которые стоят дорого. Чтобы не поднимать такие машины вручную перед каждой сборкой и не освобождать ресурсы после её завершения, мы реализовали Jenkins-плагин, который управляет виртуальными машинами в Yandex.Cloud автоматически. Команда выложила его по ссылке https://plugins.jenkins.io/yandex-cloud-workers/.

Задача:

Когда для сборки требуется огромное количество ресурсов, держать их в облаке на постоянной основе неоправданно дорого.

При работе на одном из проектов необходимо было подготовить сборку продукта на игровом движке Unreal Engine и развернуть получившийся продукт на инфраструктуре в Yandex.Cloud. Проекты на Unreal Engine требуют много ресурсов - в нашем случае для сборки необходимо было иметь  64+ гб памяти и от 40 процессорных ядер, что делает виртуальную машину для сборки проекта достаточно дорогой для того, чтобы держать ее включенной в то время, когда сборка не осуществляется.

Для уменьшения счетов за облачную инфраструктуру, нужен был инженер, который будет под каждую сборку вручную поднимать виртуальную машину, настраивать пайплайн, а после сборки освобождать ресурсы.

Внутренняя команда DevOps инженеров попросила команду разработки решить эту проблему - расширить функционал возможностью работать с виртуальными машинами в Yandex.Cloud из интерфейса Jenkins.

Аналогичных продуктов на рынке не было, поэтому решено было подготовить решение силами внутренней команды, и выпустить его как open source проект.

Итоги:

Команда разработки создала плагин для Jenkins, который позволяет создавать и использовать виртуальные машины в Yandex.Cloud по требованию и избавляться от них, когда они не используются. Для создания и использования виртуальных машин используется API Yandex.Cloud. Плагин встраивается в систему и создает ВМ только на одну сборку одного пайплайна, после завершения сборки ВМ деактивируется.

На данный момент плагин поддерживает работу с Debian-системами.
  • За несколько месяцев был разработан и внедрен в экосистему Jenkins плагин для свободного доступа и установки.
  • Проработан удобный интерфейс, который позволяет сконфигурировать необходимые настройки виртуальной машины.
  • Разработан механизм для создания, остановки, а также удаления виртуальной машины по требованию.
  • Плагин доступен для использования здесь.

Период работы:

Апрель 2023 — Октябрь 2023

Команда:

4 человека: 3 бэкенд-разработчика, 1 DevOps, 1 QA

Технологии:

Java
Jenkins Plugin
Yandex.Cloud
Jeknins
Automation
DevOps
Обсудить проект _
Если у вас есть ИТ-проблема , оставьте свои контакты, и мы поможем правительству спланировать ее решение . Обещаем не рассылать спам.
hello@softwarecats.dev
Новосибирск, ул. Демакова
23/5, оф.308
Контакты _

Еще про наши проекты: