Project goal: Introduce new features and improvements in the plugin installation manager
Skills to study/improve: Java, YAML, Command line tools, Package management tool theory
In 2019 there was a Jenkins Google Summer of Code project to create a tool to automatically install plugins from the command line based on a provided input. This is meant to help with creating reproducible environments and other places where you would want to install a certain set of plugins. The project was successful in creating a useable tool to install plugins with a 1.0 release. Over time, the plugin installation manager was improved and added to other components like official Jenkins container images.
As a part of this project, contributors are invited to introduce new features and improvements in the plugin installation manager. The list of enhancements is a subject for discovery as a part of the application process. Some of the ideas are available in the project tracker.
Additional background information may be found in a video recording from 2021.
Visit the project page for more details.
Clone the project
Run the tests; there are several different lists of plugins
Run the Plugin Installation Manager for various combinations of plugins with a real Jenkins instance. See how the downloads and caching work.
Try out some edge cases to see what could be improved.
Java
YAML/data structures/package management tools
Writing command line interfaces
How the Jenkins Docker image and Configuration as Code (CasC) work
Improvements to existing tool
Key improvements for the plugin installation manager tool will be identified, prioritized, and planned. Google Summer of Code contributor will propose the areas for improvement and work with mentors to plan those improvements.
Some candidate ideas from the mentors include:
Add subcommands to the command line arguments requires a definition and design of the subcommands and their behavior
Only download a plugin once per session (test if still an issue)
Read hpi files from maven cache if found there (and JENKINS-58217)
Allow plugin versions from the plugin bill of materials to be preferred over latest version
Add command line option to ignore errors if plugin download fails
Some good first issues are available in the issue tracker. For information about how to contribute to and what to work on, please use the gitter channel.