Jenkins
The CI/CD elder. Self-hosted, plugin-driven, dominant in enterprise. The Groovy Jenkinsfile is a rite of passage.
Mindmap
The plain-English version
Jenkins is an open-source automation server, originally forked from Hudson in 2011. Self-hosted, agent-controller architecture. You define pipelines in a Jenkinsfile (Groovy DSL) checked into the repo. Massive plugin ecosystem — there's a Jenkins plugin for almost everything.
The problem it solves
Jenkins persists in enterprise for three reasons: it does everything (the plugin ecosystem is unmatched), it runs inside the corporate network (no SaaS dependency), and it has institutional weight (replacing it is expensive). New teams usually pick GitHub Actions or GitLab CI, but anyone in a long-lived org will read Jenkins.
Alternatives
| Alternative | Type | When it wins |
|---|---|---|
| GitHub Actions | CI/CD | GitHub's built-in CI/CD. YAML in your repo. Free for public, generous for private. The default for anything on GitHub. |
| GitLab CI | CI/CD | GitLab's built-in CI/CD. .gitlab-ci.yml in the repo root. The native choice if you're on GitLab. |
Deep links
The words you'll hear
- Controller / Agent
- Coordinator / worker. The controller schedules; agents execute.
- Jenkinsfile
- Pipeline definition. Declarative or scripted Groovy.
- Stage / Step
- Logical phase / individual command.
- Pipeline
- Declarative (YAML-ish, recommended) or scripted (full Groovy, more flexible).
- Multibranch pipeline
- Auto-discovers branches and PRs from a repo, runs Jenkinsfile from each.
- Shared library
- Reusable Groovy code across pipelines.
- Blue Ocean
- The modern UI. Easier to read pipelines than the classic UI.
Bad vs. good prompt for Jenkins
Why it works: Specifies declarative (vs scripted), the Docker agent pattern (cleanest), the test reporting, the gate, and the failure path. The result is reviewable as a Jenkinsfile and matches enterprise conventions.
What bites real teams
Jenkins's strength becomes its weakness. Plugins are unevenly maintained; some break on upgrade. Audit installed plugins regularly.
Declarative is the modern recommended style. Older Jenkinsfiles are scripted. Mixing them in one file is awkward.
Self-hosted Jenkins controller is a piece of infrastructure that needs the same care as production — backups, upgrades, HA.