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.
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:
Plugins plug into these extensibility points and extend the capabilities of Jenkins without modifying Jenkins core itself.
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.
The source of this diagram is on github, to be opened with https://app.diagrams.net.