Jenkins, an open-source automation server for continuous integration and delivery, has a shutdown mode, during which preparation waits for all already executed jobs to finish and prevents the new queued ones to build. This thesis aims to implement a Jenkins plugin that allows these stationary jobs to overtake a frozen queue. The resulting working plugin possesses end-user functionality enough to control its main logic. The thesis describes the Jenkins benefits, accounts for its main components, generally explains the Jenkins plugin deployment, and describes the design and implementation for the final Shutdown Queue Plugin.
Jenkins automation server has a queuing mechanism to checkout jobs before execution and shutdown mode when the queue is frozen and the system just waits for all jobs to be finished. When the queue is full of short jobs and the last running job is a very long job, this becomes very inefficient. The student will analyze how Jenkins is estimating the time of individual jobs, how the queue is organized, and how the shutdown mode works.
The result of the thesis will be working Jenkins plugin, ensuring that short jobs can overtake frozen queue during the shutdown time of long-running tasks. The plugin will be deployed on the official website of the Jenkins project.