Jenkins Course
What is Jenkins
Somewhere right now, a developer is manually running tests, zipping up files, and SSHing into a server to deploy code. They've done it forty times this month. Jenkins exists so that person never has to do it again.
Let's start with the honest definition: Jenkins is an open-source automation server. That sentence is technically accurate and almost completely unhelpful, so let's do better.
Imagine your software team is a busy restaurant kitchen. Dishes need to go through prep, cooking, plating, and delivery — in that exact order, every time, without anyone skipping steps. A new ticket comes in: the chef calls it out. The line cooks execute their part. The expeditor makes sure everything hits the pass in the right order. Nobody forgets the garnish. Nobody sends out a raw chicken breast.
Jenkins is the expeditor. Every time a developer pushes code, Jenkins takes that ticket — runs the tests, builds the application, deploys to the right environment — in the right order, every single time. No one has to remember the steps. No one has to be on call just to click a button.
The Core Idea
Jenkins is the automation layer between your code repository and your running application. Every time code changes, Jenkins can automatically test it, build it, and ship it — without a human in the loop.
The Night-Shift Worker Who Never Sleeps
Here's the analogy that actually makes Jenkins click for most people: Jenkins is the night-shift worker who never sleeps, never complains, never forgets a step, and doesn't need a salary.
Your developers push code at 11 PM on a Friday. Jenkins wakes up instantly. It pulls the latest code, runs 800 unit tests, builds a Docker image, pushes it to the registry, and deploys to staging — all before anyone's finished their post-commit coffee. No one had to be paged. No one had to log in. It just happened, exactly the way it was supposed to.
That's Continuous Integration and Continuous Delivery (CI/CD). Jenkins is one of the most widely-used tools for implementing it — and it has been for over a decade.
Where Jenkins Fits in the Picture
Before we look at any code or configuration, you need a mental model of where Jenkins lives in a software delivery workflow. This diagram is that model:
A developer pushes code → Jenkins wakes up → tests run, app builds → ships to the right environment → team gets notified. No human in the middle.
Every box in that diagram is something Jenkins can handle — or hand off to the right tool. That's the power of it. Jenkins doesn't do everything itself; it orchestrates the things that need to happen, in the right order, using whatever tools your team already uses.
What Does Jenkins Actually Look Like?
Jenkins runs as a web application. You access it through a browser — usually on port 8080. Here's what the dashboard looks like when it's set up with a few active jobs:
Green = last build passed. Red = last build failed. This is the first thing every DevOps engineer checks in the morning.
That dashboard is your command centre. Green means the last build passed. Red means something broke. At a glance, you know the health of every automated workflow in your system.
A Brief, Honest History
Jenkins started life as Hudson, a project built by Kohsuke Kawaguchi at Sun Microsystems in 2004. After Oracle acquired Sun in 2010, the open-source community forked the project and renamed it Jenkins. Since then it has become one of the most deployed DevOps tools on the planet — with over 300,000 active installations and a plugin ecosystem of more than 1,800 extensions.
That history matters for one reason: Jenkins is mature. It's not a startup project. The rough edges have been found — and mostly fixed — by hundreds of thousands of teams running it in production. The problems you'll hit, someone has already hit and documented.
Jenkins vs. the Alternatives
You've probably heard of GitHub Actions, GitLab CI, CircleCI, or TeamCity. They all do overlapping things. Here's the honest picture:
Where Jenkins Isn't the Best Fit
- Small teams who want zero infrastructure overhead
- Projects already 100% on GitHub and wanting tight native integration
- Teams with no one to own and maintain a Jenkins server
Where Jenkins Wins
- Complex enterprise pipelines with many systems to integrate
- Teams who need full control over their CI infrastructure
- Organisations running mixed tech stacks across many repos
- Anywhere the 1,800+ plugin ecosystem is a real advantage
The companies running Jenkins at scale aren't doing it out of stubbornness. They're doing it because nothing else gives them the same combination of flexibility, plugin coverage, and control over where their build infrastructure lives.
What You'll Be Able to Do
By the time you finish this course, you'll be able to install Jenkins, configure it securely, write production-grade pipelines in Groovy, connect it to GitHub, Docker, and Kubernetes, and scale it across multiple machines. You'll also know where the bodies are buried — the configuration mistakes and anti-patterns that bite teams in production.
This first section is about building the mental model. No installs yet. No pipelines yet. Just a clear picture of what Jenkins is, how it thinks, and why it works the way it does. Everything else builds on top of that.
Let's look at the first concrete piece: what a Jenkins job actually is, using the one tool that comes with every Jenkins install.
The scenario:
You're a junior DevOps engineer on your first week at a mid-sized SaaS company. Your team lead just told you Jenkins is running on the company's internal server. "Go look at what's in there," they said. You open a browser, navigate to the Jenkins URL, and you see a list of jobs. You don't touch anything — you just want to understand what you're looking at. This command is how you'd list all the jobs on a Jenkins server from the command line, so you can get the same view without the UI.
# Install the Jenkins CLI jar so you can interact with Jenkins from the terminal
# Replace JENKINS_URL with your actual server address (e.g. http://jenkins-master-01:8080)
curl -O http://JENKINS_URL/jnlpJars/jenkins-cli.jar
# Run the 'list-jobs' command using the CLI
# -s sets the Jenkins server address
# -auth authenticates with a username and API token (never use your password here)
java -jar jenkins-cli.jar \
-s http://jenkins-master-01:8080 \
-auth admin:your-api-token \
list-jobs
api-gateway-deploy frontend-test payment-service-build user-auth-pipeline
What just happened?
The Jenkins CLI (Command Line Interface) is a Java tool that ships with every Jenkins install — it's sitting at /jnlpJars/jenkins-cli.jar on any running Jenkins server. The list-jobs command is one of the simplest things it does: it connects to the Jenkins API and prints every job name, one per line. That output — four job names — is exactly what you'd see as four tiles on the dashboard in the browser. The -auth flag takes a username and an API token, not your plain password. If you ever see someone passing their actual password in a CLI command, that's a security problem. The API token is generated inside Jenkins under your user profile settings. Notice we haven't written any Groovy, any Jenkinsfile, or any pipeline code — this is just the simplest possible interaction with a running Jenkins server, and it's a good first sanity check that your connection works.
Teacher's Note
The single biggest mistake I see engineers make when they first touch Jenkins is treating it like a magic box — something they just point at a repo and it figures the rest out. It doesn't. Jenkins is a dumb-but-reliable executor. It does exactly what you tell it to do, in exactly the order you tell it. The entire skill of Jenkins is learning how to write those instructions well. Everything in this course is about giving you that skill.
Practice Questions
1. In one or two words, what type of tool is Jenkins?
2. Jenkins has over 1,800 extensions that add new capabilities. What are these called?
3. What port does Jenkins use by default?
Quiz
1. What is the primary purpose of Jenkins in a software delivery workflow?
2. What was Jenkins originally called before it was renamed?
3. In Jenkins terminology, what is a "job"?
Up Next · Lesson 2
Why Jenkins is Used
The manual deploy horror story — and exactly why teams choose Jenkins to end it for good.