Extensions
Extensibility in Jenkins, for core internals as well as for plugins, is accomplished by definitions of extension points. In general an extension point is an interface or abstract class that defines a contract of what needs to be implemented by contributing classes.
There a mainly two concepts of Descriptors and Describables and Actionable and Actions in order to create new or extend other extension points.
The bulk work in developing plugin consists in implementing those extension points. Whenever a plugin implements such extension points by annotating the class with an @Extension mark, Jenkins automatically detects, creates instances and attaches them to the according extension point instance.
Example Extension
The implementation of the BuildStepDescriptor below registers a new build step called SampleBuilder by marking the Descriptor class with the @Extension annotation.
@Extension
public static class Descriptor extends BuildStepDescriptor<Builder> {
@Override
public String getDisplayName() {
return "SampleBuilder";
}
}
Further Reading
The full list of all available extensions can be found in the Extensions Index.
For further information regarding extending Jenkins in general see Extensibility.