CloudEvents plugin for Jenkins

Project goal: Build a plugin able to listen to and emit CloudEvents from Jenkins

Skills to study/improve: Java, Go, CloudEvents SDK, CDEvents SDK, Networking

Details

Background

As the CI/CD world moves towards interoperability between multiple platforms, Jenkins should also be compatible with the emergent interoperability standards. Some of these standards concerning communication between different CI/CD platforms are put forth by the CloudEvents and CDEvents specifications. This spec outlines the structure of CloudEvents, which are produced or consumed by entities that support it, hence making those entities compatible with other CI/CD platforms that allow them to work together.

Jenkins currently supports CloudEvents via a former GSoC project from 2021, however, it does not support CDEvents, making it hard for users to use it with other platforms that support both.

The previous CloudEvents plugin project in Google Summer of Code 2021 was a predecessor to the CDEvents project, that is currently running in the Continuous Delivery Foundation, this is such that this older project could not support CDEvents since it existed before CDEvents' inception. For CDEvents only, we have an existing plugin that is able to listen to and emit CDEvents, but does not support CloudEvents. This project aims to extend Jenkins support to both the CloudEvents and CDEvents. More information about that project is available at https://cdevents.dev/. For this new project, we will enable Jenkins to support CDEvents. That may involve extending or adjusting the CloudEvents plugin so that it supports CDEvents. The most likely scenario is that we will start a new plugin for this project.

For context, we expect the selected contributor to harness both the CloudEvents Java SDK and the CDEvents Java SDK to create and read events by the proposed new plugin for Jenkins. The contributor must also understand how the Jenkins plugin development life-cycle works and gain hands-on experience in plugin architecture design.

Project Details

This project idea proposes to implement a Jenkins plugin which extends the Jenkins to make CloudEvents both discoverable and subscribable. Users should be able to set a global configuration to allow users to subscribe and discover CloudEvents.

The project requires the student to start with plugin development from scratch and then work with understanding how to use the CloudEvents Java SDK to create and read events.

In the beginning, the student can work on understanding the Jenkins plugin development by writing code for creating a simple Build Step which creates a CloudEvent, and from there we can move to the GlobalPluginConfiguration on how Jenkins should listen to the CloudEvents.

Project Size

This project is of medium size and is expected to be completed in ~175 hours.

Project Difficulty

Intermediate to Advanced

There are many examples of such documentation on the web:

Quick-start

The project requires the student to start with plugin development from scratch and then work with understanding how to use the CloudEvents Java SDK to create and read events.

In the beginning, the student can work on understanding the Jenkins plugin development by writing code for creating a simple Build Step which creates a CloudEvent, and from there we can move to the GlobalPluginConfiguration on how Jenkins should listen to the CloudEvents.

Skills to improve/study

  • Java

  • Go

  • Networking

  • Jenkins

Potential Mentors

Project Links

Organization Links

> Go back to other GSoC 2024 project ideas