Jenkins is an automation server, and the thing that most determines how it behaves in practice is that the controller is a single Java process with a directory of state behind it. JENKINS_HOME holds the configuration, job definitions, build history, plugins and credentials, and almost every operational property follows from that: backup means capturing that directory consistently, restoring means putting it back, and controller responsiveness degrades when too much build history, too many plugins or too much work happens on the controller itself rather than on an agent.
Work is executed by agents connected to that controller — statically provisioned, launched over SSH, started as ephemeral containers on Kubernetes, or created on demand in a cloud. Labels and node requirements route a build to a machine that can actually run it, which matters when some stages need a licensed toolchain, a specific operating system or physically attached hardware. Executors, queue behaviour and agent capacity are the levers for throughput.
Pipelines are the modern job definition: a Jenkinsfile in the repository, written in declarative syntax for structure or scripted Groovy where more control is needed, with a shared library holding the steps an organisation reuses. Multibranch pipelines discover branches and pull requests automatically. Credentials are injected by binding rather than stored in job configuration. Authorisation is a strategy — matrix or role-based — layered over an identity source. And the plugin ecosystem that makes Jenkins integrate with everything is also its largest maintenance and security surface, which is why plugin lifecycle management and configuration as code with JCasC are core skills rather than advanced ones.
Why this skill matters now
Jenkins is simultaneously the most widely deployed CI server and the one most organisations describe as a liability, and both facts create demand for the same skill. The installations are large, the delivery of everything depends on them, and the people who built them have moved on. Someone has to keep them fast, patched, restorable and understandable — and increasingly has to decide what happens to them next.
Security accelerated that. Plugin vulnerabilities are published regularly, an unpatched controller with agent-to-controller access is a serious exposure, and credential handling in old freestyle jobs rarely survives review. Organisations that once treated Jenkins as a background utility now include it in scope for audits, which turns plugin inventory, authorisation strategy, credential binding, agent isolation and upgrade cadence into board-visible work.
At the same time the ecosystem moved. Hosted CI services and pipeline-native tools took the greenfield work, so the interesting Jenkins skill is no longer setting up a first job. It is operating a controller at scale, converting a decade of freestyle jobs into versioned pipelines and shared libraries, managing an agent fleet with real constraints, encoding configuration as code so an instance can be rebuilt, and running an honest evaluation of what should stay and what should move. That combination — operations, migration and judgement — is much scarcer than pipeline syntax.