GSoC 2025 - Gradle Convention Plugin for Developing Jenkins Plugins#
This project aims to modernize Jenkins plugin development with Gradle by updating the Gradle JPI plugin to comply with Jenkins hosting requirements. The goals include achieving feature parity with Maven workflows, improving developer experience through a new convention plugin streamlining the build, test, and release process for Jenkins plugins. This project will provide the Jenkins community with a modern, robust Gradle-based ecosystem by improving developer efficiency and plugin reliability.

⚡Status#
Passed mid-term evaluation with successful integration of Jenkins BOM, Quality Tools & Static Analysis Integration :-)
🚩 Goal#
To deliver a production-grade, idiomatic Gradle convention plugin purpose-built for Jenkins plugin development, designed to provide seamless feature parity with the Jenkins Plugin Parent POM (& Maven lifecycle), but leveraging the power & expressiveness of Kotlin & Kotlin DSL. This convention plugin will strictly adhere to the principle of Convention over Configuration (CoC), enabling Jenkins plugin developers to effortlessly adopt community best practices, security standards, & Jenkins hosting requirements out of the box.
🤝 Team#
Contributor#
Mentors#
🧩 Rationale#
Jenkins plugin development is currently fragmented across two major build tools: Maven and Gradle. While Maven enjoys mature support through the Jenkins Parent POM, the Gradle ecosystem lags behind due to an outdated and incomplete Gradle JPI plugin. This results in:
- Non-compliance with Jenkins Hosting Requirements, making plugin publishing harder
- Poor support for compatibility testing (PCT)
- Cumbersome dependency management and BOM integration
- Inconsistent development experience due to the Groovy-based configuration
- Lack of standardized, reusable configuration via a convention plugin
These issues make it significantly harder for developers, especially those familiar with Gradle, to contribute high-quality plugins to the Jenkins ecosystem.
📝 Deliverables#
Integration of Jenkins & Ecosystem BOM Mangement#
Status: Complete
Objectives:
- Simplify dependency management for Jenkins plugin projects, eliminating "dependency hell" by providing robust, convention-driven BOM (Bill of Materials) integration.
- Ensure that developers spend less time troubleshooting version conflicts & more time building features, with reliable, reproducible builds as the default experience.
Implemented Features:
- Apply a curated set of BOMs (Bill of Materials) for Jenkins core & major ecosystem dependencies (Spring, Jackson, Jetty, Groovy, Netty, SLF4J, Guava, Log4J, Vert.x, etc.) which leads to transparent, idiomatic BOM management.
- Add support for toggling BOMs on/off via plugin DSL or Gradle properties.
- Users may declare additional BOMs as needed for their plugins, including test-only.
Quality Tools & Static Analysis Integration#
Status: Complete
Objectives:
- Minimize configuration burden & reduce boilerplate for plugin developers, raising the baseline of code quality across all Jenkins plugins built with Gradle.
Implemented Features:
- Provide out-of-the-box integration with industry-standard static analysis & code quality tools (Checkstyle, PMD, SpotBugs, Detekt, Spotless, Jacoco/Kover, OWASP Dependency Check, Dokka, etc.) to enforce Jenkins community best practices.
- Add effortless customization & conditional enablement/disablement of each tool via the plugin DSL or Gradle properties.
- Enforce consistent, modern Kotlin project setup by auto applying recommended compiler options, JVM toolchain, & dependency alignment using a centralized version catalog; minimizing misconfiguration.
Publish Convention Plugin#
Status: Complete
- Successfully published the Jenkins Gradle Convention Plugin on the Gradle Plugin Portal with proper versioning & metadata for discoverability and usability by plugin developers.
⏳ What's next?#
- Improve the metadata/manifest/pom generation by automatically populating essential & previously missing manifest entries.
- Integrate Plugin Compatibility Tester (PCT)
- Comprehensive, easy-to-follow documentation, integrated in CI/CD
- Solicit feedback from the Jenkins and Gradle communities to guide improvements