Setup for the Jenkins Development Environment Jenkins Online Meetup

We just announced the next Jenkins Online Meetup is scheduled for Wednesday, 26 January, 2022
Thank you to @uhafner for sharing how he has setup the Jenkins dev environment for his students.

Pls RSVP via the online meeup

Presenter: Ullrich Hafner, Software Engineer Professor from the University of Applied Sciences, Munich
Co-presenters:Mark Waite, Darin Pope, Jean-Marc Meessen

Call-in info: Coming soon

When new time contributors or students want to participate in Jenkins development they are often struggling with the initial setup of the complex development environment. In order to reduce the initial ramp-up time for those new participants I published a pre-configured Jenkins development environment project on GitHub. Iā€™m using this environment regularly in my software engineering courses here at the University of Applied Sciences in Munich so students are able to contribute to Jenkins without a hassle.

The development environment consists of the following parts:

  • Scripts to check out all modules of my Jenkins plugins from GitHub (if you want to contribute to other plugins then you need to customize that part).
  • IntelliJ project that configures these plugins as Maven modules. This project contains presets of my coding style and some other helpful configurations. Especially, it has runners configured to debug Jenkins plugins either on the controller or agent. Additionally, there are runners to start the unit tests, integration tests, or UI tests within IntelliJ.
  • Docker based Jenkins controller that has all required plugins installed to see these plugins in action. This Jenkins controller is already configured properly using JCasC to build Java modules on a Linux based agent (also provided as docker container). It already contains some jobs that use all of these plugins (tests, coverage, static analysis).
  • Scripts to build and deploy those plugins to this local Jenkins controller. So contributors can simply deploy new plugin versions and inspect those plugins in a real Jenkins instance with preconfigured jobs and builds.