Hello Jenkins Developers! [image: 👋]

I am very excited to announce the Jenkins Gradle Convention Plugin 
<https://github.com/aaravmahajanofficial/jenkins-gradle-convention-plugin> 
— a Kotlin-first, Gradle Convention plugin (a feature similar to Maven 
Parent POM - docs 
<https://docs.gradle.org/current/samples/sample_convention_plugins.html>) 
that standardizes and simplifies building Jenkins plugins with Gradle. This 
plugin extends and builds upon the well-established gradle-jpi-plugin 
<https://github.com/jenkinsci/gradle-jpi-plugin>, adding the unified build 
flow, conventions, opinionated defaults, and integrations that bring 
Gradle-based Jenkins plugin development tools closer to what is possible in 
the Maven tools (hosting compliance, BOMs, testing and PCT, quality gates). 
It also allows for idiomatic Gradle experience.

This plugin is being developed as part of my Google Summer of Code 2025 
project, in collaboration with Gradle, Netflix and the Kotlin Foundation. 
My mentors for this project are Oleg Nenashev 
<https://github.com/oleg-nenashev>, Steve Hill <https://github.com/sghill> 
and Rahul Somasunderam <https://github.com/rahulsom>.

For more details, check out the Project Idea Page 
<https://kotlinlang.org/docs/gsoc-2025.html#gradle-convention-plugin-for-developing-jenkins-plugins-easy-to-hard-90-hrs-to-350-hrs>
 
and My Project Page 
<https://community.gradle.org/events/gsoc/2025/jenkins-plugins-toolchain/>. 
Here is also my demo from the mid-term evaluation: Google Drive Link 
<https://drive.google.com/file/d/1VaGFiRP466RS1FyaT6rT7xskZKXJ50x_/view?usp=drive_link>
.

P.S.: A newer “JPI2” variant of the Gradle JPI Plugin was introduced by 
Rahul and Steve, adding support for Gradle 8+ and improved dependency 
handling. Once this new version provides the necessary APIs, the convention 
plugin can be moved to it.

Background & Motivation

In late 2022 the community discussed 
<https://groups.google.com/g/jenkinsci-dev/c/lHQAiEepBiw?pli=1> the 
limitations of Gradle for Jenkins plugin hosting and automation. New OSS 
plugins built with Gradle were temporarily blocked until the hosting 
requirements were met, and maintainers called for help to close the gaps in 
the Gradle toolchain. This plugin and the wider GSoC’25 effort are direct 
follow-ups to that discussion.

What my plugin brings today

1. First-class support for the Jenkins BOM, plus support for other 
ecosystem BOMs like netty, jetty, jackson, sl4j etc.

2. Industry-standard code-quality tools like Spotless, Spotbugs, PMD, 
Checkstyle, Detekt, JaCoCo/Kover, OWASP deps check etc.; all wired up with 
defaults aligned to the Jenkins ecosystem and defaults in the Maven Parent 
POM.

3. Corrects and enriches the generated plugin manifest (e.g., developers, 
licenses, SCM, plugin metadata), aligning with Maven defaults and Jenkins 
publishing(update-center) expectations

4. Superior DX: version-catalogs, concise DSL to reduce boilerplate

5. Zero-Config Setup: just apply my plugin from the Gradle Plugin Portal 
<https://plugins.gradle.org/plugin/io.github.aaravmahajanofficial.jenkins-gradle-convention-plugin/>
 
in your `build.gradle.kts` and you are ready-to-go :)

Native Gradle Support in Jenkins PCT

One of the major deliverables for this project is enabling Gradle-built 
plugins to be tested  by Plugin Compatibility Tester in the same way as 
Maven-built ones.

I have suggested a patch for this in this PR 
<https://github.com/jenkinsci/plugin-compat-tester/pull/795>.

Next Steps

The Jenkins Gradle Convention Plugin is an important step toward making 
Gradle a first-class citizen in Jenkins plugin development, closing 
long-standing gaps identified in prior community discussions.While still 
under active development as part of GSoC’25, it already provides a usable 
foundation with conventions, BOM management, quality gates, and PCT 
integration. More work is needed to add support for plugins continuous 
delivery. Seamless integration with Jenkins pipeline steps like 
buildPluginWithGradle 
<https://github.com/jenkins-infra/pipeline-library/blob/master/vars/buildPluginWithGradle.txt>
 
for CI workflows is on our roadmap.

I invite all the Jenkins community developers and, especially, maintainers 
of Gradle based plugins, to try it out, provide feedback, and help refine 
it into a stable toolchain that benefits all.Contributions, real-world 
testing, and discussions are very welcome :)

Source code is available in my GitHub repository 
<https://github.com/aaravmahajanofficial/jenkins-gradle-convention-plugin>. 
If you would like to share any feedback, please respond in this thread or 
create a GitHub issue. We also have a #jenkins-plugin-toolchain channel on 
the Gradle Community Slack <https://slack.gradle.org/>.

Best wishes,

Aarav Mahajan <https://github.com/aaravmahajanofficial/>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/jenkinsci-dev/59ad2020-a8c7-446d-a1ae-8e5546b41d34n%40googlegroups.com.

Reply via email to