Extension Points defined in Jenkins Core

Table of Contents

AbstractProject.LabelValidator

Plugins may want to contribute additional restrictions on the use of specific labels for specific projects. This extension point allows such restrictions.

Implementations:

(no known implementations)

AdministrativeMonitor

Checks the health of a subsystem of Jenkins and if there's something that requires administrator's attention, notify the administrator.

Implementations:

AgentProtocol

Pluggable Jenkins TCP agent protocol handler called from TcpSlaveAgentListener .

Implementations:

AlternativeUiTextProvider

Provides the alternative text to be rendered in the UI.

Implementations:

AperiodicWork

Extension point which allows scheduling a task with variable interval. Interval in evaluated every time before next task is scheduled by calling #getRecurrencePeriod() . Task to be scheduled is obtain by calling #getNewInstance() .

Implementations:

ArtifactManagerFactory

Pluggable ability to manage transfer and/or storage of build artifacts. The descriptor should specify at least a display name, and optionally a {@code config} view. Since the user can configure this class, you must have a DataBoundConstructor .

Implementations:

AuthorizationStrategy

Controls authorization throughout Hudson.

Implementations:

BasicHeaderAuthenticator

When Jenkins receives HTTP basic authentication, this hook will validate the username/password pair.

Implementations:

BuildDiscarder

Implementation of "Discard old build records" feature.

Implementations:

BuildReference.HolderFactory

Extensible factory for creating build references.

Implementations:

BuildStepListener

Receives events that happen as a build executes BuildStep s.

Implementations:

BuildVariableContributor

Contributes build variables to builds.

Implementations:

BuildWrapper

Pluggability point for performing pre/post actions for the build process.

Implementations:

Builder

BuildStep s that perform the actual build.

Implementations:

CLICommand

Base class for Hudson CLI.

Implementations:

CaptchaSupport

Extension point for adding Captcha Support to User Registration Page CaptchaSupport .

Implementations:

ChangeLogAnnotator

Performs mark up on changelog messages to be displayed.

Implementations:

ChannelConfigurator

Intercepts the new creation of Channel and tweak its configuration.

Implementations:

CliTransportAuthenticator

This extension point has no Javadoc documentation.

Implementations:

(no known implementations)

Cloud

Creates Node s to dynamically expand/shrink the agents attached to Hudson.

Implementations:

CloudProvisioningListener

Allows extensions to be notified of events in any Cloud and to prevent provisioning from a Cloud .

Implementations:

ComputerConnector

Factory of ComputerLauncher .

Implementations:

ComputerLauncher

Extension point to allow control over how Computer s are "launched", meaning how they get connected to their agent program.

Implementations:

ComputerListener

Receives notifications about status changes of Computer s.

Implementations:

ComputerPanelBox

Adds box rendered in the computer side panel.

Implementations:

ComputerPinger

A way to see if a computer is reachable.

Implementations:

ComputerSet.ComputerSource

Allows plugins to override the displayed list of computers.

Implementations:

ConsoleAnnotationDescriptor

Descriptor for ConsoleNote .

Implementations:

ConsoleAnnotatorFactory

Entry point to the ConsoleAnnotator extension point. This class creates a new instance of ConsoleAnnotator that starts a new console annotation session.

Implementations:

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. ( jenkinsdoc:ArgumentListBuilder#add(String, boolean)[] is a simpler way to suppress a single password.)

Implementations which are Serializable may be sent to an agent JVM for processing. In particular, this happens under JEP-210. In this case, the implementation should not assume that JenkinsJVM#isJenkinsJVM , and if generating ConsoleNote s will need to encode them on the master side first.</p>

Implementations:

ConsoleNote

Data that hangs off from a console output.

Implementations:

CrumbExclusion

Allows plugins to define exceptions to the CSRF protection filter.

Implementations:

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.

Implementations:

CustomClassFilter

Allows extensions to adjust the behavior of ClassFilter#DEFAULT . Custom filters can be called frequently, and return values are uncached, so implementations should be fast.

Implementations:

DescriptorVisibilityFilter

Hides Descriptor s from users.

Implementations:

DownloadService.Downloadable

Represents a periodically updated JSON data file obtained from a remote URL.

Implementations:

EnvVarsFilterGlobalRule

Environment variables filter rule that is configured globally for all jobs.

The job types can be filtered using jenkinsdoc:#isApplicable(Run, Object, Launcher)[] </p>

Implementations:

EnvVarsFilterLocalRule

Environment variables filter rule that is specific to a job configuration, using script-specific variables, etc.

The job types can be filtered using EnvVarsFilterLocalRuleDescriptor#isApplicable(Class) </p>

Implementations:

EnvironmentContributor

Contributes environment variables to builds.

Implementations:

ExecutorListener

A listener for task related events from executors. A Computer#getRetentionStrategy or SlaveComputer#getLauncher may implement this interface. Or you may create an implementation as an extension (since 2.318).

Implementations:

ExtendedReadRedaction

Redact {@code config.xml} contents for users with ExtendedRead permission while lacking the required Configure permission to see the full unredacted configuration.

Implementations:

ExtensionFilter

Filters out ExtensionComponent s discovered by ExtensionFinder s, as if they were never discovered.

Implementations:

ExtensionFinder

Discovers the implementations of an extension point.

Implementations:

FederatedLoginService

Abstraction for a login mechanism through external authenticator/identity provider (instead of username/password.)

Implementations:

FilePath.FileCallableWrapperFactory

This extension point allows to contribute a wrapper around a fileCallable so that a plugin can "intercept" a call.

The #wrap(hudson.remoting.DelegatingCallable) method itself will be executed on the controller (and may collect contextual data if needed) and the returned wrapper will be executed on remote.</p>

Implementations:

FingerprintFacet

Plugin-specific additions to fingerprint information.

Implementations:

FingerprintStorage

Pluggable fingerprint storage API for fingerprints.

Implementations:

GlobalBuildDiscarderStrategy

Extension point for global background build discarders.

Implementations:

GlobalConfiguration

Convenient base class for extensions that contributes to the system configuration page but nothing else, or to manage the global configuration of a plugin implementing several extension points.

Implementations:

GlobalConfigurationCategory

Grouping of related GlobalConfiguration s.

Implementations:

GlobalSettingsProvider

This extension point has no Javadoc documentation.

Implementations:

Extension point that provides capabilities to render a specific header.

Implementations:

HttpServletFilter

More convenient and declarative way to use PluginServletFilter . Register an implementation if you wish to intercept certain HTTP requests. Typical implementations will inspect HttpServletRequest#getPathInfo to determine if they should be active.

Implementations:

HttpSessionListener

jakarta.servlet.http.HttpSessionListener ExtensionPoint for Jenkins.

Allows plugins to listen to HttpSession lifecycle events.</p>

Implementations:

HudsonHomeDiskUsageMonitor.Solution

Extension point for suggesting solutions for full JENKINS_HOME. Views are as follows:

Implementations:

(no known implementations)

IdStrategy

The strategy to use for manipulating converting names (e.g. user names, group names, etc) into ids.

Implementations:

InstallState

Jenkins install state.

Implementations:

InstallStateFilter

Allows plugging in to the lifecycle when determining InstallState from InstallUtil#getNextInstallState(InstallState)

Implementations:

(no known implementations)

InstanceIdentityProvider

A source of instance identity.

Should not be used from plugins, except to be implemented by {@code instance-identity}. Other plugins wishing to get the RSA key may depend on {@code instance-identity} directly.</p>

Implementations:

ItemCategory

A category for hudson.model.Item s.

Implementations:

ItemListener

Receives notifications about CRUD operations of Item .

Implementations:

JnlpAgentReceiver

Receives incoming agents connecting through the likes of JnlpSlaveAgentProtocol4 or WebSocketAgents .

Implementations:

Job

A job is an runnable entity under the monitoring of Hudson.

Implementations:

Job.BuildNumberAssigner

Alternate strategy for assigning build numbers.

Implementations:

JobProperty

Extensible property of Job .

Implementations:

LabelAtomProperty

Extensible property of LabelAtom .

Implementations:

LabelFinder

Automatically adds labels to Node s.

Implementations:

LabelValidator

Plugins may want to contribute additional restrictions on the use of specific labels for specific context items. This extension point allows such restrictions.

Implementations:

(no known implementations)

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.

Implementations:

Lifecycle

Provides the capability for starting/stopping/restarting/uninstalling Hudson.

Implementations:

ListViewColumn

Extension point for adding a column to a table rendering of Item s, such as ListView .

Implementations:

LoadBalancer

Strategy that decides which Task gets run on which Executor .

Implementations:

LoadPredictor

Predicts future load to the system, to assist the scheduling decisions

Implementations:

Extension point to add icon to {@code http://server/hudson/manage} page.

Implementations:

MarkupFormatter

Generalization of a function that takes text with some markup and converts that to HTML. Such markup is often associated with Wiki.

Implementations:

MyViewsTabBar

Extension point for adding a MyViewsTabBar header to Projects MyViewsProperty .

Implementations:

Node

Base type of Jenkins agents (although in practice, you probably extend Slave to define a new agent type).

Implementations:

NodeListener

Listen to Node CRUD operations.

Implementations:

NodeMonitor

Extension point for managing and monitoring Node s.

Implementations:

NodeProperty

Extensible property of Node .

Implementations:

NodeProvisioner.Strategy

Extension point for node provisioning strategies.

Implementations:

Notifier

BuildStep s that run after the build is completed.

Implementations:

PageDecorator

Participates in the rendering of HTML pages for all pages of Hudson.

Implementations:

ParameterDefinition

Defines a parameter for a build.

Implementations:

ParserConfigurator

Configures XML parsers to be used for various XML parsing activities inside Jenkins.

Implementations:

(no known implementations)

Persistable cache of peephole permalink targets.

Implementations:

PeriodicWork

Extension point to perform a periodic task in Hudson (through Timer .)

Implementations:

PermissionAdder

Service which can add permissions for a given user to the configured authorization strategy. Useful e.g. to make the first user created in the system be automatically granted administer privilege.

Implementations:

PingFailureAnalyzer

Get notified when a channel triggered a ping failure, but before the channel is killed.

Implementations:

(no known implementations)

PluginLocaleDrivenResourceProvider

Contribute localizations for arbitrary resources from plugins.

Implementations:

PluginManagerStaplerOverride

Extension point for selectively overriding parts of the PluginManager views Anything extending this and registered with an @Extension can replace existing views and define new views.

Implementations:

(no known implementations)

PluginServletFilter

Servlet Filter that chains multiple Filter s, provided by plugins

Implementations:

(no known implementations)

PluginStrategy

Pluggability point for how to create PluginWrapper .

Implementations:

ProcessKiller

Extension point that defines more elaborate way of killing processes, such as sudo or pfexec, for ProcessTree .

Implementations:

ProcessKillingVeto

Allows extensions to veto killing processes. If at least one extension vetoes the killing of a process, it will not be killed. This can be useful to keep daemon processes alive. An example is mspdbsrv.exe used by Microsoft compilers.

Implementations:

ProjectNamingStrategy

This ExtensionPoint allows to enforce the name of projects/jobs.

Implementations:

Queue.QueueDecisionHandler

Extension point for deciding if particular job should be scheduled or not.

Implementations:

QueueIdStrategy

Pluggable strategy to generate queue item IDs as well as persist an optional opaque state whenever the queue is persisted.

Implementations:

QueueItemAuthenticator

Extension point to run hudson.model.Queue.Executable s under a specific identity for better access control. You must override either #authenticate2(hudson.model.Queue.Item) , or #authenticate2(hudson.model.Queue.Task) , or both.

Implementations:

QueueItemAuthenticatorProvider

There are cases where a plugin need to provide a QueueItemAuthenticator that cannot be controlled or configured by the user. This extension point provides the mechanism whereby the a QueueItemAuthenticator can be provided either before or after those provided by QueueItemAuthenticatorConfiguration which will use Extension#ordinal() of {@code 100}

Implementations:

QueueListener

Listener for events in Queue .

Implementations:

QueueSorter

Singleton extension point for sorting buildable items

Implementations:

QueueTaskDispatcher

Vetos the execution of a task on a node

Implementations:

Recorder

BuildStep s that run after the build is completed.

Implementations:

RepositoryBrowser

Connects Hudson to repository browsers like ViewCVS or FishEye, so that Hudson can generate links to them.

Implementations:

RestartListener

Extension point that allows plugins to veto the restart.

Implementations:

RetentionStrategy

Controls when to take Computer offline, bring it back online, or even to destroy it.

Implementations:

RootAction

Marker interface for actions that are added to jenkins.model.Jenkins .

Implementations:

RoutingDecisionProvider

This extension point has no Javadoc documentation.

Implementations:

Run

A particular execution of Job .

Implementations:

Run.StatusSummarizer

Used to implement #getBuildStatusSummary .

Implementations:

RunListener

Receives notifications about builds.

Implementations:

SCM

Captures the configuration information in it.

Implementations:

SCMCheckoutStrategy

Controls the check out behavior in AbstractBuild .

Implementations:

SCMDecisionHandler

Extension point for various decisions about SCM operations for Item instances.

Implementations:

(no known implementations)

SCMListener

Receives notifications about SCM activities in Hudson.

Implementations:

SCMPollListener

A hook for listening to polling activities in Jenkins.

Implementations:

SaveableListener

Receives notifications about save actions on Saveable objects in Hudson.

Implementations:

ScriptListener

A listener to track in-process script use.

Implementations:

SearchFactory

Creates a Search instance for a SearchableModelObject .

Implementations:

SecureRequester

An extension point for authorizing REST API access to an object where an unsafe result type would be produced. Both JSONP and XPath with primitive result sets are considered unsafe due to CSRF attacks. A default implementation allows requests if a deprecated system property is set, or if Jenkins is unsecured anyway, but plugins may offer implementations which authorize scripted clients, requests from inside a trusted domain, etc.

Implementations:

SecurityListener

Listener notified of various significant events related to security.

Implementations:

SecurityRealm

Pluggable security realm that connects external user database to Hudson.

Implementations:

SettingsProvider

This extension point has no Javadoc documentation.

Implementations:

SimplePageDecorator

Participates in the rendering of the login page

Implementations:

SlaveRestarter

Extension point to control how to restart an inbound agent when it loses the connection with the master.

Implementations:

SlaveSystemInfo

Extension point that contributes to the system information page of Computer .

Implementations:

SubTaskContributor

Externally contributes SubTask s to AbstractProject#getSubTasks() .

Implementations:

(no known implementations)

Telemetry

Extension point for collecting JEP-214 telemetry.

Implementations:

ToolInstallation

Formalization of a tool installed in nodes used for builds. (Examples include things like JDKs, Ants, Mavens, and Groovys.)

Implementations:

ToolInstaller

An object which can ensure that a generic ToolInstallation in fact exists on a node. The properties can be added to ToolInstallation using the InstallSourceProperty .

Implementations:

ToolLocationTranslator

This Jenkins-wide extension points can participate in determining the actual node-specific path of the ToolInstallation for the given Node .

Implementations:

ToolProperty

Extensible property of ToolInstallation .

Implementations:

TopLevelItem

Item that can be directly displayed under jenkins.model.Jenkins or other containers. (A "container" would be any ItemGroup {@code }, such as a folder of projects.) Ones that don't need to be under specific parent (say, unlike {@code MatrixConfiguration}), and thus can be freely moved, copied, etc.

Implementations:

TransientActionFactory

Allows you to add actions to any kind of object at once. but may specify a type such as TopLevelItem most of whose implementations are in fact Actionable

Implementations:

TransientBuildActionFactory

Extension point for inserting transient Action s into Run s.

Implementations:

TransientComputerActionFactory

Extension point for inserting transient hudson.model.Action s to hudson.model.Computer s.

To register your implementation, put hudson.Extension on your subtype.</p>

Implementations:

TransientFingerprintFacetFactory

This extension point has no Javadoc documentation.

Implementations:

(no known implementations)

TransientProjectActionFactory

Extension point for inserting transient Action s into AbstractProject s.

Implementations:

TransientUserActionFactory

Extension point for inserting transient Action s into User s.

Implementations:

TransientViewActionFactory

Extension point for adding transient Action s to View s.

Implementations:

Trigger

Triggers a Build .

Implementations:

URLConnectionDecorator

Decorates the connections that Jenkins open to access external resources.

Implementations:

UnprotectedRootAction

RootAction s that are accessible to requests that do not have the READ permission on jenkins.model.Jenkins .

Implementations:

UpdateCenter.UpdateCenterConfiguration

Strategy object for controlling the update center's behaviors.

Implementations:

(no known implementations)

User.CanonicalIdResolver

Resolves User IDs by ID, full names or other strings.

This extension point may be useful to map SCM user names to Jenkins User IDs. Currently the extension point is used in jenkinsdoc:User#get(String, boolean, Map)[] .</p>

Implementations:

UserAvatarResolver

Infers avatar image URLs for users

Implementations:

UserExperimentalFlag

User specific experimental flag to enable or disable specific behavior. As it's user specific, usually this kind of feature flag is only used for UI.

Implementations:

UserNameResolver

Finds full name off the user when none is specified.

Implementations:

(no known implementations)

UserProperty

Extensible property of User .

Implementations:

UserPropertyCategory

Grouping of related UserProperty s.

Implementations:

UserSeedChangeListener

Listener notified when a user was requested to changed their seed

Implementations:

(no known implementations)

View

Encapsulates the rendering of the list of TopLevelItem s that Jenkins owns.

Implementations:

ViewJobFilter

Each ViewJobFilter contributes to or removes from the list of Jobs for a view.

Implementations:

ViewProperty

Extensible property of View .

Implementations:

(no known implementations)

ViewsTabBar

Extension point for adding a ViewsTabBar header to Projects ListView .

Implementations:

WidgetFactory

Allows you to add new widgets to various kind of objects whose class implements HasWidgets .

Implementations:

WorkspaceBrowser

Allows to access a workspace as an alternative to online build node.

Primary use case is hudson.slaves.Cloud implementations that don't keep the agent online to browse workspace, but maintain a copy of node workspace on the controller.</p>

Implementations:

(no known implementations)

WorkspaceListener

This extension point has no Javadoc documentation.

Implementations:

WorkspaceLocator

Allow extensions to override workspace locations on given agents or projects.

Implementations: