Custom Jenkins distribution build service
Project goal: Provide an out of the box solution for packaging Jenkins distributions as WAR files or Docker images
Skills to study/improve: Java, Web Development, Docker
Details
For many users, they download Jenkins first, then select some plugins and configure them. It might take a lot of time, like hours. But if we can get a perfect Jenkins distribution which contains all we need, it can save that time for us.
The service could be in the form of a website offered as https://customize.jenkins.io. Plus, 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 project is expected to have a backend and a frontend parts. Thanks to Custom WAR Packager for Jenkins, it already did a lot of works. It can be the main library for the backend project.
The backend should provide a modern Restful API. We can develop different clients based on it, e.g. a Command Line Interface or a Desktop GUI application.. A readable API documentation is necessary. Like many projects, the Swagger UI is a good example. We can start the backend project with SpringBoot, it might save a lot of time.
Quickstart
The ci.jenkins.io-runner is a good starting point. Clone the repository and follow the quickstart guide provided in the readme.
The Spring Boot Documentation is a good reference to have a look at, which can give you a fair idea about the services that could be incorporarted via a REST API Interface into the project.
The React Getting Started guide is a good way to get familiar with the front end framework required for the project. You could begin by learning how the front end and backend communicate with each other and how would that work out in terms of this custom service.
Newbie-friendly Issues
You could start out with Newbie-Friendly-Issues.
References
Below you can find a list of existing plugins and libraries which can be used for inspiration:
Organization Links
-
Jenkins GSoC page - documentation, application guidelines
-
Participate and contribute to Jenkins - landing page for newcomer contributors
-
Newbie-friendly issues - list of organization-wide newbie-friendly issues (use them if there is no links in the project idea) > Go back to other GSoC 2020 project ideas