Project goal: Update the plugin installation manager to integrate with the docker image and Configuration as Code projects
Skills to study/improve: Java, JSON, Command line tools, Package management tool theory
Last summer, 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. As the project progressed over the summer, the student received a lot of enhancement suggestions that were great, but out of the scope of the summer project. This summer, the project should incorporate enough enhancements to be used by the official Jenkins docker tooling and Configuration as Code.
Following the project tracker, there are several tickets specific to better running with the docker image that would make it more universal. Most of these revolve around using alternative locations for downloading plugins, and sharing a cache with the maven repo.
Along with improvements that are already known, it’s important for the student to work with the community to integrate the tool with the docker image and with Configuration as Code. There are some requirements the student will have to discover to fully integrate the plugin installation manager tool.
Visit the project page at https://github.com/jenkinsci/plugin-installation-manager-tool
Clone the project
Run the tests; there are several different lists of plugins
You would also want to try experimenting with other lists of plugins; you can almost pick at random and see how it installs. You can launch an instance of Jenkins using your created plugin folder to see how it loads
How do we use other update-center jsons without compromising download accuracy? How do we better catch edge cases for dependent plugins?
JSON/data structures/package management tools
Writing command line interfaces
How the Jenkins Docker image and Configuration as Code (CasC) work
For information about how to contribute to and what to work on, please use the gitter channel. Since the project is in active development, these issues could be closed by the time you are looking at them.