# jenkinsci/jenkins architecture

> Architecture diagram of the GitHub repository jenkinsci/jenkins, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jenkinsci/jenkins
- Repository: https://github.com/jenkinsci/jenkins

## Overview

Jenkins is an extensible automation server: users configure jobs, Jenkins schedules work, and build tasks support project building, testing, analysis, and deployment. Its runtime model includes jobs and runs, a queue and executors, agent nodes, SCM abstractions, plugin extensions, and administrative interfaces. The README establishes the product and automation capabilities; the tree identifies the relevant runtime areas. Sampled excerpts cover selected utilities and integrations, not the central scheduling or build implementation, so the graph shows only the principal documented relationships and avoids detailed internal call claims.

Main entry points: [`core/src/main/java/hudson/model/Hudson.java`](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Hudson.java) (Jenkins Core), [`core/src/main/java/hudson/model/Run.java`](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Run.java) (Build Runs), [`core/src/main/java/hudson/model/Executor.java`](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Executor.java) (Executors), [`core/src/main/java/hudson/model/Job.java`](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Job.java) (Jobs and Runs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_control["Job Control"]
  node_web["Jenkins Core<br/>[Hudson.java]"]
  node_jobs["Jobs and Runs<br/>[Job.java]"]
  node_queue["Build Queue<br/>[Queue.java]"]
end

subgraph group_execution["Build Execution"]
  node_nodes["Agent Nodes<br/>[Node.java]"]
  node_executors["Executors<br/>[Executor.java]"]
  node_build["Build Runs<br/>[Run.java]"]
  node_workspace["Workspace Files<br/>[FilePath.java]"]
end

subgraph group_integration["Extensions"]
  node_scm["SCM Integration<br/>[SCM.java]"]
  node_plugins["Plugin Runtime<br/>[PluginManager.java]"]
  node_extensions["Extension Registry<br/>[ExtensionList.java]"]
end

subgraph group_admin["Administration"]
  node_cli["CLI Commands<br/>[CLICommand.java]"]
  node_security["Federated Login"]
  node_updates["Plugin Updates<br/>[UpdateCenter.java]"]
  node_browser["Browser UI"]
end

subgraph group_state["Runtime State"]
  node_fingerprints[("Fingerprints")]
  node_download["Update Metadata"]
end

node_user(("Developer"))
node_scmservice(("Source Control"))
node_agent(("Build Agent"))
node_updatehost(("Update Sites"))

node_user -->|"configures jobs"| node_web
node_web -->|"manages jobs"| node_jobs
node_jobs -->|"schedules work"| node_queue
node_queue -->|"dispatches work"| node_executors
node_executors -->|"uses node"| node_nodes
node_executors -->|"runs task"| node_build
node_build -->|"uses workspace"| node_workspace
node_build -->|"uses SCM"| node_scm
node_scm -->|"accesses source"| node_scmservice
node_nodes -->|"connects agent"| node_agent
node_plugins -->|"registers extensions"| node_extensions
node_web -->|"manages plugins"| node_plugins
node_user -->|"runs commands"| node_cli
node_cli -->|"requests operations"| node_web
node_user -->|"uses interface"| node_browser
node_web -->|"supports login"| node_security
node_user -->|"manages updates"| node_updates
node_updates -->|"retrieves metadata"| node_download
node_download -->|"downloads data"| node_updatehost
node_build -->|"records fingerprints"| node_fingerprints

click node_web "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Hudson.java"
click node_jobs "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Job.java"
click node_queue "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Queue.java"
click node_scm "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/scm/SCM.java"
click node_nodes "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Node.java"
click node_executors "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Executor.java"
click node_build "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Run.java"
click node_workspace "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/FilePath.java"
click node_plugins "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/PluginManager.java"
click node_extensions "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/ExtensionList.java"
click node_cli "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/cli/CLICommand.java"
click node_security "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/security/FederatedLoginService.java"
click node_updates "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/UpdateCenter.java"
click node_fingerprints "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/jenkins/fingerprints/FileFingerprintStorage.java"
click node_download "https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/DownloadService.java"
click node_browser "https://github.com/jenkinsci/jenkins/blob/master/src/main/js/util/jenkinsLocalStorage.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_web,node_jobs,node_queue toneBlue
class node_nodes,node_executors,node_build,node_workspace toneAmber
class node_scm,node_plugins,node_extensions toneMint
class node_cli,node_security,node_updates,node_browser toneRose
class node_fingerprints,node_download,node_user,node_scmservice,node_agent,node_updatehost toneIndigo
```

## Components

### Job Control

- [Jenkins Core](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Hudson.java): `core/src/main/java/hudson/model/Hudson.java`
- [Jobs and Runs](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Job.java): `core/src/main/java/hudson/model/Job.java`
- [Build Queue](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Queue.java): `core/src/main/java/hudson/model/Queue.java`

### Build Execution

- [Agent Nodes](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Node.java): `core/src/main/java/hudson/model/Node.java`
- [Executors](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Executor.java): `core/src/main/java/hudson/model/Executor.java`
- [Build Runs](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Run.java): `core/src/main/java/hudson/model/Run.java`
- [Workspace Files](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/FilePath.java): `core/src/main/java/hudson/FilePath.java`

### Extensions

- [SCM Integration](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/scm/SCM.java): `core/src/main/java/hudson/scm/SCM.java`
- [Plugin Runtime](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/PluginManager.java): `core/src/main/java/hudson/PluginManager.java`
- [Extension Registry](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/ExtensionList.java): `core/src/main/java/hudson/ExtensionList.java`

### Administration

- [CLI Commands](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/cli/CLICommand.java): `core/src/main/java/hudson/cli/CLICommand.java`
- [Federated Login](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/security/FederatedLoginService.java): `core/src/main/java/hudson/security/FederatedLoginService.java`
- [Plugin Updates](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/UpdateCenter.java): `core/src/main/java/hudson/model/UpdateCenter.java`
- [Browser UI](https://github.com/jenkinsci/jenkins/blob/master/src/main/js/util/jenkinsLocalStorage.js): `src/main/js/util/jenkinsLocalStorage.js`

### Runtime State

- [Fingerprints](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/jenkins/fingerprints/FileFingerprintStorage.java): `core/src/main/java/jenkins/fingerprints/FileFingerprintStorage.java`
- [Update Metadata](https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/DownloadService.java): `core/src/main/java/hudson/model/DownloadService.java`

### Other components

- **Developer**
- **Source Control**
- **Build Agent**
- **Update Sites**

## Connections

- Developer → Jenkins Core: configures jobs
- Jenkins Core → Jobs and Runs: manages jobs
- Jobs and Runs → Build Queue: schedules work
- Build Queue → Executors: dispatches work
- Executors → Agent Nodes: uses node
- Executors → Build Runs: runs task
- Build Runs → Workspace Files: uses workspace
- Build Runs → SCM Integration: uses SCM
- SCM Integration → Source Control: accesses source
- Agent Nodes → Build Agent: connects agent
- Plugin Runtime → Extension Registry: registers extensions
- Jenkins Core → Plugin Runtime: manages plugins
- Developer → CLI Commands: runs commands
- CLI Commands → Jenkins Core: requests operations
- Developer → Browser UI: uses interface
- Jenkins Core → Federated Login: supports login
- Developer → Plugin Updates: manages updates
- Plugin Updates → Update Metadata: retrieves metadata
- Update Metadata → Update Sites: downloads data
- Build Runs → Fingerprints: records fingerprints
