jenkinsci / jenkinsci/configuration-as-code-plugin

Split the plugin to JCasC API and JCasC plugin

Open
#279 13 comments 3 reactions 1 assignee Claimed by @oleg-nenashev View on GitHub
Dominant language
Java
Stars
2.8k
Forks
756
Avg merge
9h 47m
Merged PRs (30d)
10

Description

Currently JCasC exists as a single plugin. In longer term it may cause issues with adoption of the plugin:

* The plugin depends on the Jenkins core, and there are some fixes needed there to make the plugin more reliable (e.g. we need new milestone to prevent race conditions with Job loading)
* If we update the entire plugin to the new core, plugin developers would have to bump the core requirement as well if they want to support JCasC. In some cases it may be impossible (support policies, user requirements)

I would propose to split the plugin to two ones:

* "Jenkins Configuration-as-Code API" plugin. Targets Jenkins 2.60.x
* Extension points for Plugin developers
* "Jenkins Configuration-as-Code" plugin. Generally targets recent LTS versions of Jenkins
* Boot logic: Initializer, plugin management, etc.
* Configurator implementations for Jenkins Core
* Complex extension implementations, e.g. DataBoundConfigurator. It may stay in the API plugin, but eventually it may need to pick new core features like `@DataBound` proposed by @ndeloof

Such plugin split would support evolving the JCasC plugin along with the core, but at the same time it will allow more conservative plugin developers to integrate with the plugin.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.