Knowing which part does what explains Jenkins's configuration screens, its scaling story and most of its failure modes.
Jenkins is a Java server you host yourself. Its main parts:
- The controller runs the web UI, stores configuration and build history in
JENKINS_HOME, schedules work and talks to agents. - Agents are machines (VMs, containers, Kubernetes pods) that execute builds. Each agent offers a number of executors, slots for concurrent builds. Agents are identified by labels such as
linuxordocker. - Jobs (also called items or projects) define what to build. The modern type is a Pipeline job defined by a
Jenkinsfile; older Freestyle jobs are configured through web forms and are hard to version. - Builds are individual runs of a job, numbered #1, #2..., each with a console log, status and stored artifacts.
- Plugins provide nearly everything: Git integration, Pipeline itself, credentials, Docker and Kubernetes agents, notifications. A typical installation has dozens.
A build typically starts from a trigger: a webhook from GitHub or GitLab, a cron-like schedule, polling a repository, another job finishing, or a person clicking Build Now.
Compared with hosted CI services, Jenkins gives you full control over hardware, network and plugins, at the cost of running, upgrading and securing the server yourself.
Remember
- The controller schedules and stores; agents execute builds on executors
- Pipeline jobs are defined as code in a Jenkinsfile
- Plugins supply most features, including Git and Pipeline
Watch out for
- Running builds on the controller itself; it should only orchestrate.