Quantcast
Channel: Jenkins Blog
Viewing all articles
Browse latest Browse all 1087

Plugin Health Scoring System

$
0
0
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.


Overview

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.



Viewing all articles
Browse latest Browse all 1087

Trending Articles