GSoC Project Intro: Support Core Plugin Improvements
About me
I am Minudika Malshan, an undergraduate student in Computer Science and Engineering from University of Moratuwa, Sri Lanka.
As a person who is passionate in open source software development and seeking for new knowledge and experience, I am willing to give my contribution for this project.
Abstract
The Support-Core Plugin provides the basic infrastructure for generating "bundles" of support information with Jenkins. There are two kinds of bundles.
-
Automatic bundles: Bundles which are generated and get saved in $JENKINS_HOME/support once per hour starting 15 seconds after Jenkins starts the plugin. The automatic bundles are retained using an exponential aging strategy. Therefore it’s possible to have a bunch of them over the entire lifetime after the plugin installing the plugin.
-
On demand bundles: These bundles are generated from the root "Support" action.
However current support-core plugin is not much user friendly. The object of this project is to make it more user friendly by adding some features which make a sophisticated environment for the user who use support plugin.
In this project scope, there are three features and improvements we are going to consider.
-
Ease the bundles management by the administrator (JENKINS-33090)
-
Adding an option to anonymize customer labels (strings created by the user such as name of a job, folder, view, agent, and template etc). (JENKINS-33091)
-
Allowing user to create an issue and submit a bundle into the OSS tracker using the support-core plugin. (JENKINS-21670)
Arnaud Héritier and Steven Christou are guiding me through the project as my mentors.
Tasks and Deliverables
Ease the bundles management by the administrator.
Under this task, the following functions are going to be implemented.
-
Listing bundles stored on the jenkins instance with their details.
-
Allowing user to download each bundle.
-
Allowing user to delete each bundle or all bundles.
-
Allowing user to browse the content of each bundle.
-
Automatically purging old bundles.
Enabling user to create an issue and submit a bundle into the OSS tracker
When a Jenkins user sees an issue, he/she commonly contacts his support contacts (Jenkins instance admins) and then Jenkins admins troubleshoot the issue. The objective of this task is to implement a feature which enables the user to report an issue to a admin through support core plugin.
When creating bundles to attach with the ticket, it is important to protect the privacy of the user who creates the ticket. When considering doing that, anonymizing user created labels (texts) comes to the front.
Adding an option to anonymize customer labels
The following functions will be implemented under this task.
-
Creating randomized tokens for labels created by users.
-
Producing a mapping for those labels.
-
Substituting encoded labels into all the files included in the support bundle.
When creating randomized tokens, it would be much useful and effective if we can create those tokens in a way they make sense to humans. (i.e. readable to humans). For that, I am hoping to use a suitable java library to create human friendly random tokens. One of such libraries is wordnet-random-name.
However in order to substitute randomized tokens, all files included in the bundle should be read. This can become inefficient when bundle consists of large number of files. Therefore it’s important to follow an optimized method for this task.