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
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.
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.
You could start out with Newbie-Friendly-Issues.
Below you can find a list of existing plugins and libraries which can be used for inspiration: