Jenkins Course
Jenkins Jobs Overview
Every single thing Jenkins does is organised into a job. But there are five different job types — and picking the wrong one means rebuilding from scratch later. This lesson gives you the full map so you always know which type to reach for.
This lesson covers
Freestyle → Pipeline → Multibranch Pipeline → Organisation Folder → Multi-configuration — and exactly when each one belongs in your workflow
Think of a Jenkins job the way you think of a recipe card. It contains the instructions for a specific task — where to get the ingredients (your code), what steps to follow (test, build, deploy), and what to do when something goes wrong. Jenkins keeps a collection of those recipe cards and runs them on demand or automatically.
The difference between job types is how much structure and flexibility each recipe card gives you. A Freestyle job is a blank index card — write anything. A Pipeline job is a printed template with labelled sections. A Multibranch Pipeline is a whole recipe binder — one set of instructions that automatically adapts to every branch in your repo.
The Five Job Types
Freestyle Job
The original Jenkins job type. You configure everything through the UI — checkboxes, dropdowns, text fields. No code required. It's flexible but hard to version-control, hard to review, and gets messy fast on complex workflows.
Best for: Simple one-off tasks, quick experiments, teams just getting started with Jenkins.
Pipeline Job
Your pipeline is defined in a Jenkinsfile — a text file that lives in your code repository alongside your application. Because it's code, it can be reviewed, version-controlled, and tested like any other file. This is the modern standard.
Best for: Any real project. Single-branch workflows. Teams who want pipeline-as-code.
Multibranch Pipeline
Jenkins scans your repository and automatically creates a separate pipeline for every branch it finds. Push a new feature branch — Jenkins notices and creates a pipeline for it automatically. Delete the branch — Jenkins removes the pipeline. Zero manual job creation per branch.
Best for: Teams using feature branches, pull request workflows, GitFlow.
Organisation Folder
Takes the Multibranch concept up one level — Jenkins scans an entire GitHub Organisation, GitLab Group, or Bitbucket Team and automatically creates Multibranch Pipelines for every repository it finds. One job to rule dozens of repos.
Best for: Large engineering orgs managing many repositories under one GitHub org.
Multi-configuration (Matrix) Job
Runs the same job across multiple combinations of variables — for example, testing your app on Python 3.9, 3.10, and 3.11 simultaneously, across Linux and Windows. Jenkins creates a matrix of combinations and runs them all in parallel.
Best for: Cross-platform testing, multi-version compatibility checks.
Picking the Right Job — A Decision Map
When someone asks "what job type should I use?" — run through this flow top to bottom. Stop at the first box that matches your situation.
Managing dozens of repositories under one org?
→ Organisation Folder
Working with multiple branches or pull requests?
→ Multibranch Pipeline
Testing across multiple OS or language versions?
→ Multi-configuration Job
Single repo, want pipeline-as-code?
→ Pipeline Job (this is the right answer for most teams)
Just learning, or need a quick one-off task?
→ Freestyle Job
The New Item Screen Up Close
When you click New Item in Jenkins, this is the screen you see. Every job type is listed here. Here's what it looks like and what to expect from each option:
Enter an item name
payment-service-build
Freestyle project
This is the central feature of Jenkins. Jenkins will build your project, combining any SCM with any build system.
Pipeline
Orchestrates long-running activities that can span multiple build agents. Suitable for building pipelines and/or organising complex activities that do not easily fit in a freestyle job.
Multibranch Pipeline
Creates a set of Pipeline projects according to detected branches in one SCM repository.
Organisation Folder
Scans a GitHub Organisation (or similar) for repositories and automatically creates pipelines for each one.
Seeing Your Jobs From the Terminal
The scenario:
You've just taken over a Jenkins instance from a colleague who left the company. You have no idea what jobs are configured, what type they are, or when they last ran. Before you touch anything, you want a complete inventory. This command gives you the name and type of every job on the server in one shot.
Tools used:
- curl — command-line tool for making web requests. We use it to query the Jenkins REST API.
- Jenkins REST API — add
/api/jsonto any Jenkins URL to get that page's data as JSON. Thetreeparameter lets you specify exactly which fields you want back — keeping the response small and readable. - python3 -m json.tool — built into Python, formats raw JSON into readable indented output. No installation needed.
# Query the Jenkins API for all jobs — requesting only name and class (type)
# 'tree=jobs[name,_class]' tells the API to return just those two fields
# without 'tree', Jenkins returns everything which can be hundreds of lines
curl \
--user admin:your-api-token \
"http://jenkins-master-01:8080/api/json?tree=jobs[name,_class]" \
| python3 -m json.tool
Where to practice: If Jenkins is running locally via Docker from Lesson 5, run this against http://localhost:8080. Use your admin username and password. No extra tools needed — curl and Python 3 come pre-installed on Mac and most Linux distros. On Windows, use Git Bash or WSL. Full API docs at jenkins.io — Remote Access API.
{
"_class": "hudson.model.Hudson",
"jobs": [
{
"name": "api-gateway-deploy",
"_class": "org.jenkinsci.plugins.workflow.job.WorkflowJob"
},
{
"name": "frontend-test",
"_class": "hudson.model.FreeStyleProject"
},
{
"name": "checkout-service",
"_class": "org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject"
},
{
"name": "payment-service-build",
"_class": "org.jenkinsci.plugins.workflow.job.WorkflowJob"
}
]
}
What just happened?
_classis Jenkins' internal job type identifier — it's a Java class name, which is why it looks verbose. But once you know the pattern, it's easy to read.hudson.model.FreeStyleProject— this is a Freestyle job. Thehudsonprefix is a leftover from Jenkins' original name (Hudson). Any class starting withhudson.modelis a core Jenkins type.workflow.job.WorkflowJob— this is a Pipeline job. The wordworkflowappears because Jenkins Pipelines are built on top of the Jenkins Workflow plugin.workflow.multibranch.WorkflowMultiBranchProject— this is a Multibranch Pipeline. You can immediately seecheckout-serviceis set up to track multiple branches automatically.- The
treeparameter kept the output clean — without it, the API returns build history, URLs, descriptions, and dozens more fields per job. Always usetreewhen you just need a quick inventory.
Teacher's Note
If you're starting a new project today, skip Freestyle entirely and go straight to Pipeline. Freestyle jobs can't be code-reviewed, can't be rolled back, and can't be copied between Jenkins servers cleanly. Pipeline jobs can do all three.
Practice Questions
1. Which job type automatically creates a separate pipeline for every branch in your repository?
2. A Pipeline job stores its instructions in a file that lives in your repository. What is that file called?
3. Which job type scans an entire GitHub Organisation and creates pipelines for every repository automatically?
Quiz
1. In the Jenkins API response, which _class value identifies a Freestyle job?
2. What does the tree parameter do in a Jenkins API request?
3. A team starting a new single-repo project today wants the most maintainable job type. Which should they choose?
Up Next · Lesson 8
Freestyle Jobs
You know the job types — now let's build one. Freestyle jobs hands-on, from blank screen to first successful build.