Architecture

This section provides a high level overview of the Jenkins architecture.

The audience is Java developers familiar with Jenkins (as users) who want to understand how Jenkins works internally.

Object Model

Jenkins is primarily a set of Java classes that model the concepts of a build system in a straightforward fashion. The root of this object model is Jenkins, and all other model objects are reachable from this root object.

Core model abstractions represent familiar concepts:

  • Project and other Job implementations represent configurable automation tasks or software builds.

  • Build and other Run implementations represent specific executions of a job.

  • Jenkins maintains the collection of items, global configuration, node configurations, security realms, and overall controller state.

Jenkins also provides interfaces and abstract classes that model parts of a build lifecycle:

  • SCM models source code management integration (such as Git or Subversion).

  • Builder (such as Ant or Maven) models build execution steps.

  • Publisher (such as email notifiers or test result reporters) models post-build actions.

Plugins plug into these extensibility points and extend the capabilities of Jenkins without modifying Jenkins core itself.

Dataflow diagram

This dataflow represents Jenkins as a "box". The goal is to have a view of network flow that goes in and out.

This diagram is a high level view centered on Jenkins core.

Please note that:

  • some plugins such as the LDAP plugin can contribute to add new network flow.

  • All port numbers can be changed by configuration. The port in the diagram is the default port.

  • Jenkins can be configured to use TLS (HTTPS).

  • It is not mandatory to have all agent types; there is one instance of each agent to illustrate communication types.

jenkins dataflow

The source of this diagram is on github, to be opened with https://app.diagrams.net.

Sections