Back to blog

Plugin Health Scoring System

Dheeraj Singh Jodha
Dheeraj Singh Jodha
October 10, 2022
GSoC

The goal of this blog is to showcase the work done during the Google Summer of Code 2022 coding phases. For a detailed description of the project, please see the project page.


About Project

Plugin maintenance is an extremely important phase of a plugin’s lifecycle. Jenkins is constantly developing, which raises the need for thousands of plugins to catch up with the latest developments. This allows them to stay useful for a broader set of users.

We aim to fulfill this need, by introducing a metric system to calculate the health score of Jenkins plugins. This health score measures the plugin’s development maturity level with the help of accurate numeric figures. This score attempts to provide an accurate picture of how much care and help a plugin needs, and makes it easier for contributors to contribute. This score also allows users to make a conscious decision before installing or using a plugin.

There were two coding phases in the GSoC 2022:


Phase 1

In this phase, we worked on setting up the project and followed best practices while doing so. The whole application is dockerized so that it is easier for anyone to spin up this project and test it out locally. There’s continuous integration (CI) in place for the project to make sure that new changes are tested automatically. The useful details from the Jenkins Update Center are stored inside the database to run analysis without constantly polling the Update Center.

Deliverables

  • Create a spring boot project connected with a PostgreSQL DB (PR)

  • Dockerize the whole application (PR)

  • Setup continuous integration for the project (PR)

  • Store plugin details from the update center, inside the DB in JSON format (PR)

Resources


Phase 2

In this phase, the probe engine for the probes was designed. Processes like reading the update center and executing the probe engine are now running on a schedule, without the need to restart the application. Probes created at this time are getting run by the probe engine, and are listed on the UI to highlight the current state of the project. Thanks to the helm chart that has been created to allow an easy deployment on Kubernetes, the site plugin-health.jenkins.io is live.

Deliverables

  • Design the Probe engine for the probes (PR)

  • Schedule the reading of the update center and probe engine execution (PR#1 and PR#2)

  • List the available probes of the application (PR)

  • Add a probe (PR)

  • Create a Helm chart to deploy the application on Kubernetes (PR)

  • Visit plugin-health.jenkins.io to view a list of active probes. A big thanks to the Jenkins Infrastructure team (especially HervĂ© Le Meur and Damien Duportal) for their help and support throughout.

Resources


Next Steps

  • Add more probes to the project.

  • Generate the plugin health scores based on the data extracted by the probes.

  • Deploy the health scores via a JSON file, similar to how Jenkins Update Center does it.

  • Render the detailed report of the health score of each plugin by fetching the JSON data generated above.

  • [Stretch Goal] Display Plugin health score on Plugin Manager.


Acknowledgments

  • I’m extremely grateful to have been given this opportunity to contribute to the Jenkins project. I owe it to my mentors for being able to help take this project forward and learn lots of things along the way. Shoutout to Adrien Lecharpentier and Jake Leon. They invested tremendous time and energy in mentoring me and driving this project forward. They synced with me weekly and made sure that I was learning and that we were taking this project forward, 1 PR at a time.

  • I asked all kinds of questions about this project, and Jake has been kind enough to answer all of them and help me understand this project and its future with his expertise. And a BIG shoutout to him for devoting his time to helping me prepare for my presentations by offering many tips on making effective slides and speaking well. His coaching helped me put across my points more powerfully, and made it all so easy.

  • I also want to thank Adrien for being one of the best mentors I’ve ever had. The amount of time he spent moving this project forward and sharing his expertise with me is unparalleled. And for that, I’m deeply grateful to be mentored by him. It’s an absolute privilege to get this opportunity to learn from him.

  • Also, thanks to the org admins, Jean-Marc Meessen, Alyssa Tong, and Kris Stern, for always keeping me and other contributors on our toes and assisting us with any blockers and concerns by organizing weekly stand-up calls.


About the author

Dheeraj Singh Jodha

Dheeraj Singh Jodha

Dheeraj is working as an Associate Software Quality Engineer at Red Hat. He is a Jenkins Google Summer of Code (GSoC) contributor in 2022, associated with the Plugin Health Scoring project. He started his journey of contributing to Jenkins in March 2021. He is part of the Jenkins Documentation SIG and has also made some contributions to the Custom Distribution Service for Jenkins project.