|
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: AdministrativeMonitorChecks the health of a subsystem of Hudson and if there's something that requires administrator's attention, notify the administrator. AuthorizationStrategyControls authorization throughout Hudson. AxisConfiguration axis. BuildWrapperPluggability point for performing pre/post actions for the build process. BuilderBuildSteps that perform the actual build. CLICommandBase class for Hudson CLI. ChangeLogAnnotatorPerforms mark up on changelog messages to be displayed. CloudCreates Nodes to dynamically expand/shrink the slaves attached to Hudson. ComputerConnectorFactory of ComputerLauncher. ComputerLauncherExtension point to allow control over how Computers are "launched", meaning how they get connected to their slave agent program. ComputerListenerReceives notifications about status changes of Computers. ComputerPingerA way to see if a computer is reachable. ConsoleAnnotationDescriptorDescriptor for ConsoleNote. ConsoleAnnotatorFactoryEntry point to the ConsoleAnnotator extension point. This class creates a new instance of ConsoleAnnotator that starts a new console annotation session. ConsoleLogFilterA 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. CrumbIssuerA 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. DownloadableRepresents a periodically updated JSON data file obtained from a remote URL. ExtensionFinderDiscovers the implementations of an extension point. FileSystemProvisionerPrepares and provisions workspaces for AbstractProjects. FileSystemProvisionerDescriptorDescriptor for FileSystemProvisioner. ItemListenerReceives notifications about CRUD operations of Item. JobA job is an runnable entity under the monitoring of Hudson. JobPropertyExtensible property of Job. LabelAtomPropertyExtensible property of LabelAtom. LabelFinderAutomatically adds labels to Nodes. LauncherDecoratorDecorates Launcher so that one can intercept executions of commands and alters the command being executed, such as doing this in fakeroot, sudo, pfexec, etc. LifecycleProvides the capability for starting/stopping/restarting/uninstalling Hudson. ListViewColumnExtension point for adding a column to ListView. LoadPredictorPredicts future load to the system, to assist the scheduling decisions MailAddressResolverInfers e-mail addresses for the user when none is specified. ManagementLinkExtension point to add icon to http://server/hudson/manage page. MatrixAggregatablePublisher can optionally implement this interface to perform result aggregation across MatrixRun. MatrixAggregatorPerforms the aggregation of MatrixRun results into MatrixBuild. MyViewsTabBarExtension point for adding a MyViewsTabBar header to Projects MyViewsProperty. NodeBase type of Hudson slaves (although in practice, you probably extend Slave to define a new slave type.) NodeMonitorExtension point for managing and monitoring Nodes. NodePropertyExtensible property of Node. NotifierBuildSteps that run after the build is completed. PageDecoratorParticipates in the rendering of HTML pages for all pages of Hudson. ParameterDefinitionDefines a parameter for a build. PeriodicWorkExtension point to perform a periodic task in Hudson (through Timer.) PluginServletFilterServlet Filter that chains multiple Filters, provided by plugins PluginStrategyPluggability point for how to create PluginWrapper. ProcessKillerExtension point that defines more elaborate way of killing processes, such as sudo or pfexec, for ProcessTree. QueueDecisionHandlerExtension point for deciding if particular job should be scheduled or not. QueueSorterSingleton extension point for sorting buildable items QueueTaskDispatcherVetos the execution of a task on a node RecorderBuildSteps that run after the build is completed. RepositoryBrowserConnects Hudson to repository browsers like ViewCVS or FishEye, so that Hudson can generate links to them. RestartListenerExtension point that allows plugins to veto the restart. RetentionStrategyControls when to take Computer offline, bring it back online, or even to destroy it. RootActionMarker interface for actions that are added to Hudson. RunA particular execution of Job. RunListenerReceives notifications about builds. SCMCaptures the configuration information in it. SCMListenerReceives notifications about SCM activities in Hudson. SaveableListenerReceives notifications about save actions on Saveable objects in Hudson. SecurityRealmPluggable security realm that connects external user database to Hudson. SolutionExtension point for suggesting solutions for full HUDSON_HOME. SubTaskContributorExternally contributes SubTasks to AbstractProject#getSubTasks(). TestDataPublisherContributes TestActions to test results. TestResultParserParses test result files and builds in-memory representation of it as TestResult. ToolInstallationFormalization of a tool installed in nodes used for builds (examples include things like JDKs, Ants, Mavens, and Groovys) ToolInstallerAn object which can ensure that a generic ToolInstallation in fact exists on a node. ToolLocationTranslatorThis Hudson-wide extension points can participate in determining the actual node-specific path of the ToolInstallation for the given Node. ToolPropertyExtensible property of ToolInstallation. TopLevelItemItem that can be directly displayed under Hudson. TransientProjectActionFactoryExtension point for inserting transient Actions into AbstractProjects. TransientViewActionFactoryExtension point for adding transient Actions to Views. TriggerTriggers a Build. UDPBroadcastFragmentExtension point that contributes an XML fragment to the UDP broadcast. UpdateCenterConfigurationStrategy object for controlling the update center's behaviors. UserNameResolverFinds full name off the user when none is specified. UserPropertyExtensible property of User. ViewEncapsulates the rendering of the list of TopLevelItems that Hudson owns. ViewJobFilterEach ViewJobFilter contributes to or removes from the list of Jobs for a view. ViewsTabBarExtension point for adding a ViewsTabBar header to Projects ListView. WidgetBox to be rendered in the side panel. |
Comments (3)
Jul 21, 2009
Nick Pellow says:
All the links to the Plugin Points on this page are broken. e.g. http://hudson-c...All the links to the Plugin Points on this page are broken. e.g. http://hudson-ci.org/javadoc/byShortName/hudson/model/AdministrativeMonitor .
It looks like the Javadoc is no longer at http://hudson-ci.org/javadoc/ . Is there a new location?
Jul 23, 2009
Tom Rodriguez says:
Javadocs seem to be located at https://hudson.dev.java.net/nonav/javadoc/.Javadocs seem to be located at https://hudson.dev.java.net/nonav/javadoc/.
Jan 26, 2010
Fernando Rosado says:
What extension should I use to modify the appearance of "userContent? I want sor...What extension should I use to modify the appearance of "userContent? I want sort the list of files showed by date instead of by name. Any suggestion?