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:

Potential Mentors

linuxsuren 赵晓杰(Rick) jeffpearce Jeff Pearce