Jump to: navigation, search

Extension points

Revision as of 15:31, 27 August 2013 by Scott.fisher.oracle.com (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.