Development of a Jenkins Plugin for Yandex.Cloud VM Management

When a build requires a lot of resources, constantly keeping these resources running in the cloud becomes too expensive.

In one of our projects, we needed to build an Unreal Engine based product and deploy it in Yandex.Cloud. Unreal Engine projects are very resource-demanding—in our case, the build required 64+ GB of RAM and 40+ CPU cores. This made running the VM without active builds quite expensive.

To save costs, engineers have to manually start the VM for each build, set up the pipeline, and release the resources after the build was done.

Our DevOps team asked us to fix this—they wanted a way to control VMs in Yandex.Cloud directly from a Jenkins plugin. There were no similar tools on the market, so we decided to build it ourselves and make it open-source.

As a result, we built a Jenkins plugin that allows you to create and use VMs in Yandex.Cloud when you need them and shut them down when you don't.
The Yandex.Cloud API is used for creating and managing VMs. The plugin creates a VM for a single build and shuts it down when the build is completed. Currently, the plugin works on Debian-based systems.

Results:

In just a few months, we developed the plugin and added it to the Jenkins ecosystem for anyone to use free of charge.
- We designed an easy-to-use interface for configuring VM settings.
- We built a mechanism to create, stop, and delete VMs on demand.
- The plugin is available for download here.

Completed Tasks:

Create a plugin to easily manage Jenkins environment to work with VMs in Yandex.Cloud

Team:

  • Design and analysis—1 engineer.
  • Development—3 backend developers, 1 DevOps engineer.
  • Testing—1 DevOps engineer.

Technologies:

  • Java 21;
  • Maven 4.0.0;
  • io.jenkins.archetypes 4.76
  • Yandex Cloud API 2.6.4
  • Jenkins 2.414.3
Java
Jenkins Plugin
Yandex.Cloud
Jeknins
Automation
DevOps

More about our projects: