The architecture of Jenkins plugins
The Jenkins plugin architecture leverages extension points, which essentially provide implementation hooks for plug-in developers to extend the functionality of a given Jenkins subsystem, or plugin. Jenkins itself has hundreds of extension points. Extension points are automatically detected by Jenkins during the loading of the system.
The extension point architecture offers an easy way to extend or alter the inner functionality of an abstract Java class or interface without the need to recompile the subsystems. Jenkins has numerous extension points and often plugins also have extension points. The generally accepted development pattern is to locate a suitable extension point to manipulate, and then extend Jenkins (or a plugin) by implementing a set of classes and methods that override or modify the existing functionality. Some of the more common extension points include:
SecurityRealm
Builder
BuildStep
Publisher
Trigger
Recorder
ManagementLink
The extension points...