Project goal: Improve the out of the box solution for packaging Jenkins distributions as WAR files or Docker images
Skills to study/improve: Java, Web Development, Docker
Many users will download Jenkins and spend a great deal of time customizing their environment to be exactly what they need. Often this is done through trial and error. It would not only be nice to create common configurations to share with team members, but with the wider community.
Last summer, a project (custom-distribution-service) created the base application with a UI and support for uploading configurations. There were a lot of suggestions over the course of the summer, to the point where it would make sense to continue the work over another summer. The project is currently hibernating though would be useful after issues are addressed.
The service was temporarily offered as a website at https://customize.jenkins.io. More importantly, it should support self-hosting by Jenkins users who want to run it internally. People can select the following configuration items:
Jenkins core version
plugins
common configuration, user/password, update-center site e.g.
plugin based configuration, Kubernetes, Sonarqube plugin config e.g.
backup/restore solution
data storage solution
multi-form package, jenkins.war or docker image
configuration should be scenario-based
other things
The entire service exists, but could be greatly expanded on in terms of useability. While hosting would be an interesting challenge, initial focus should be on local execution. The most important thing to focus on is the backend. This needs to be documented, and available over a generic REST api.
There are several extra suggestions defined in the Issues of the main project that can be expanded as the student chooses. There are UI enhancements like better notifications of selected plugins, and backend improvements such as REST consistency.
The custom-distribution-service is where the project currently lives.
The ci.jenkins.io-runner is a good starting point. Clone the repository and follow the quickstart guide provided in the readme.
The React Getting Started guide is a good way to get familiar with the front end framework used in the project.
Open issues for the project are found here: custom-distribution-service/issues
Below you can find a list of existing plugins and libraries along with the repository of the project: