Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Extension points
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:
AdministrativeMonitor
Checks the health of a subsystem of Hudson and if there's something that requires administrator's attention, notify the administrator.
AuthorizationStrategy
Controls authorization throughout Hudson.
Axis
Configuration axis.
BuildWrapper
Pluggability point for performing pre/post actions for the build process. Builder
BuildSteps that perform the actual build. CLICommand
Base class for Hudson CLI. ChangeLogAnnotator
Performs mark up on changelog messages to be displayed. Cloud
Creates Nodes to dynamically expand/shrink the slaves attached to Hudson. ComputerConnector
Factory of ComputerLauncher. ComputerLauncher
Extension point to allow control over how Computers are "launched", meaning how they get connected to their slave agent program. ComputerListener
Receives notifications about status changes of Computers. ComputerPinger
A way to see if a computer is reachable. ConsoleAnnotationDescriptor
Descriptor for ConsoleNote. ConsoleAnnotatorFactory
Entry point to the ConsoleAnnotator extension point. This class creates a new instance of ConsoleAnnotator that starts a new console annotation session. ConsoleLogFilter
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. CrumbIssuer
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. Downloadable
Represents a periodically updated JSON data file obtained from a remote URL. ExtensionFinder
Discovers the implementations of an extension point. FileSystemProvisioner
Prepares and provisions workspaces for AbstractProjects. FileSystemProvisionerDescriptor
Descriptor for FileSystemProvisioner. ItemListener
Receives notifications about CRUD operations of Item. Job
A job is an runnable entity under the monitoring of Hudson. JobProperty
Extensible property of Job. LabelAtomProperty
Extensible property of LabelAtom. LabelFinder
Automatically adds labels to Nodes. LauncherDecorator
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. Lifecycle
Provides the capability for starting/stopping/restarting/uninstalling Hudson. ListViewColumn
Extension point for adding a column to ListView. LoadPredictor
Predicts future load to the system, to assist the scheduling decisions MailAddressResolver
Infers e-mail addresses for the user when none is specified. ManagementLink
Extension point to add icon to http://server/hudson/manage page. MatrixAggregatable
Publisher can optionally implement this interface to perform result aggregation across MatrixRun. MatrixAggregator
Performs the aggregation of MatrixRun results into MatrixBuild. MyViewsTabBar
Extension point for adding a MyViewsTabBar header to Projects MyViewsProperty. Node
Base type of Hudson slaves (although in practice, you probably extend Slave to define a new slave type.) NodeMonitor
Extension point for managing and monitoring Nodes. NodeProperty
Extensible property of Node. Notifier
BuildSteps that run after the build is completed. PageDecorator
Participates in the rendering of HTML pages for all pages of Hudson. ParameterDefinition
Defines a parameter for a build. PeriodicWork
Extension point to perform a periodic task in Hudson (through Timer.) PluginServletFilter
Servlet Filter that chains multiple Filters, provided by plugins PluginStrategy
Pluggability point for how to create PluginWrapper. ProcessKiller
Extension point that defines more elaborate way of killing processes, such as sudo or pfexec, for ProcessTree. QueueDecisionHandler
Extension point for deciding if particular job should be scheduled or not. QueueSorter
Singleton extension point for sorting buildable items QueueTaskDispatcher
Vetos the execution of a task on a node Recorder
BuildSteps that run after the build is completed. RepositoryBrowser
Connects Hudson to repository browsers like ViewCVS or FishEye, so that Hudson can generate links to them. RestartListener
Extension point that allows plugins to veto the restart. RetentionStrategy
Controls when to take Computer offline, bring it back online, or even to destroy it. RootAction
Marker interface for actions that are added to Hudson. Run
A particular execution of Job. RunListener
Receives notifications about builds. SCM
Captures the configuration information in it. SCMListener
Receives notifications about SCM activities in Hudson. SaveableListener
Receives notifications about save actions on Saveable objects in Hudson. SecurityRealm
Pluggable security realm that connects external user database to Hudson. Solution
Extension point for suggesting solutions for full HUDSON_HOME. SubTaskContributor
Externally contributes SubTasks to AbstractProject#getSubTasks(). TestDataPublisher
Contributes TestActions to test results. TestResultParser
Parses test result files and builds in-memory representation of it as TestResult. ToolInstallation
Formalization of a tool installed in nodes used for builds (examples include things like JDKs, Ants, Mavens, and Groovys) ToolInstaller
An object which can ensure that a generic ToolInstallation in fact exists on a node. ToolLocationTranslator
This Hudson-wide extension points can participate in determining the actual node-specific path of the ToolInstallation for the given Node. ToolProperty
Extensible property of ToolInstallation. TopLevelItem
Item that can be directly displayed under Hudson. TransientProjectActionFactory
Extension point for inserting transient Actions into AbstractProjects. TransientViewActionFactory
Extension point for adding transient Actions to Views. Trigger
Triggers a Build. UDPBroadcastFragment
Extension point that contributes an XML fragment to the UDP broadcast. UpdateCenterConfiguration
Strategy object for controlling the update center's behaviors. UserNameResolver
Finds full name off the user when none is specified. UserProperty
Extensible property of User. View
Encapsulates the rendering of the list of TopLevelItems that Hudson owns. ViewJobFilter
Each ViewJobFilter contributes to or removes from the list of Jobs for a view. ViewsTabBar
Extension point for adding a ViewsTabBar header to Projects ListView. Widget
Box to be rendered in the side panel.