Hudson defines extension points, which are interfaces or abstract classes that model an aspect of a build system. Those interfaces define contracts of what need to be implemented, and Hudson allows plugins to contribute those implementations. In general, all you need to do to register an implementation is to mark it with @Extension.
Currently the following extension points are available. See Javadoc for more details about the contracts:
Checks the health of a subsystem of Hudson and if there's something that requires administrator's attention, notify the administrator.
Controls authorization throughout Hudson.
Pluggability point for performing pre/post actions for the build process.
BuildSteps that perform the actual build.
Base class for Hudson CLI.
Performs mark up on changelog messages to be displayed.
Creates Nodes to dynamically expand/shrink the slaves attached to Hudson.
Factory of ComputerLauncher.
Extension point to allow control over how Computers are "launched", meaning how they get connected to their slave agent program.
Receives notifications about status changes of Computers.
A way to see if a computer is reachable.
Descriptor for ConsoleNote.
A hook to allow filtering of information that is written to the console log. Unlike ConsoleAnnotator and ConsoleNote, this class provides direct access to the underlying OutputStream so it's possible to suppress data, which isn't possible from the other interfaces.
A CrumbIssuer represents an algorithm to generate a nonce value, known as a crumb, to counter cross site request forgery exploits. Crumbs are typically hashes incorporating information that uniquely identifies an agent that sends a request, along with a guarded secret so that the crumb value cannot be forged by a third party.
Represents a periodically updated JSON data file obtained from a remote URL.
Discovers the implementations of an extension point.
Prepares and provisions workspaces for AbstractProjects.
Receives notifications about CRUD operations of Item.
A job is an runnable entity under the monitoring of Hudson.
Extensible property of Job.
Extensible property of LabelAtom.
Automatically adds labels to Nodes.
Decorates Launcher so that one can intercept executions of commands and alters the command being executed, such as doing this in fakeroot, sudo, pfexec, etc.
Provides the capability for starting/stopping/restarting/uninstalling Hudson.
Extension point for adding a column to ListView.
Predicts future load to the system, to assist the scheduling decisions
Infers e-mail addresses for the user when none is specified.
Extension point to add icon to http://server/hudson/manage page.
Extension point for adding a MyViewsTabBar header to Projects MyViewsProperty.
Base type of Hudson slaves (although in practice, you probably extend Slave to define a new slave type.)
Extension point for managing and monitoring Nodes.
Extensible property of Node.
BuildSteps that run after the build is completed.
Participates in the rendering of HTML pages for all pages of Hudson.
Defines a parameter for a build.
Extension point to perform a periodic task in Hudson (through Timer.)
Pluggability point for how to create PluginWrapper.
Extension point that defines more elaborate way of killing processes, such as sudo or pfexec, for ProcessTree.
Extension point for deciding if particular job should be scheduled or not.
Singleton extension point for sorting buildable items
Vetos the execution of a task on a node
BuildSteps that run after the build is completed.
Connects Hudson to repository browsers like ViewCVS or FishEye, so that Hudson can generate links to them.
Extension point that allows plugins to veto the restart.
Controls when to take Computer offline, bring it back online, or even to destroy it.
Marker interface for actions that are added to Hudson.
A particular execution of Job.
Receives notifications about builds.
Captures the configuration information in it.
Receives notifications about SCM activities in Hudson.
Receives notifications about save actions on Saveable objects in Hudson.
Pluggable security realm that connects external user database to Hudson.
Extension point for suggesting solutions for full HUDSON_HOME.
Externally contributes SubTasks to AbstractProject#getSubTasks().
Contributes TestActions to test results.
Parses test result files and builds in-memory representation of it as TestResult.
Formalization of a tool installed in nodes used for builds (examples include things like JDKs, Ants, Mavens, and Groovys)
An object which can ensure that a generic ToolInstallation in fact exists on a node.
Extensible property of ToolInstallation.
Item that can be directly displayed under Hudson.
Triggers a Build.
Extension point that contributes an XML fragment to the UDP broadcast.
Strategy object for controlling the update center's behaviors.
Finds full name off the user when none is specified.
Extensible property of User.
Each ViewJobFilter contributes to or removes from the list of Jobs for a view.
Extension point for adding a ViewsTabBar header to Projects ListView.
Box to be rendered in the side panel.