📖 Scenario: You are a DevOps engineer setting up a Jenkins multi-branch pipeline job to automatically build branches from a Git repository.This helps your team test code changes on different branches without manual job creation.
🎯 Goal: Create a Jenkins multi-branch pipeline job configuration that scans a Git repository and builds branches automatically.
📋 What You'll Learn
Create a Jenkinsfile repository URL variable
Add a branch source configuration for Git
Define the multi-branch pipeline job with the Git source
Print the job configuration XML to verify
💡 Why This Matters
🌍 Real World
Multi-branch pipeline jobs in Jenkins automatically detect and build branches from a Git repository, saving time and reducing manual job setup.
💼 Career
DevOps engineers and automation specialists use multi-branch pipelines to streamline continuous integration and delivery workflows.
Progress0 / 4 steps
1
Define the Git repository URL
Create a variable called git_repo_url and set it to the string "https://github.com/example/repo.git".
Jenkins
Hint
Use a simple string assignment to create the variable.
2
Create the Git branch source configuration
Create a dictionary called branch_source with keys "class" set to "jenkins.branch.BranchSource" and "source" set to another dictionary with "class" as "jenkins.plugins.git.GitSCMSource" and "remote" set to the variable git_repo_url.
Jenkins
Hint
Use nested dictionaries to represent the configuration structure.
3
Define the multi-branch pipeline job configuration
Create a dictionary called multi_branch_job with key "branchSources" set to a list containing the branch_source dictionary.
Jenkins
Hint
Wrap the branch source in a list and assign it to the branchSources key.
4
Print the multi-branch pipeline job configuration
Write a print statement to display the multi_branch_job dictionary.
Jenkins
Hint
Use print(multi_branch_job) to show the final configuration.
Practice
(1/5)
1. What is the main purpose of a multi-branch pipeline job in Jenkins?
easy
A. To automatically create and manage pipeline jobs for each branch in a repository
B. To run a single pipeline job for all branches combined
C. To manually configure pipelines for each branch separately
D. To deploy applications without building them
Solution
Step 1: Understand multi-branch pipeline concept
A multi-branch pipeline job automatically detects branches in a source code repository and creates pipeline jobs for each branch.
Step 2: Compare options with concept
To automatically create and manage pipeline jobs for each branch in a repository correctly describes this automation. Options B, C, and D do not match the automatic branch job creation feature.
Final Answer:
To automatically create and manage pipeline jobs for each branch in a repository -> Option A
Hint: Multi-branch pipelines auto-create jobs per branch [OK]
Common Mistakes:
Thinking it runs one job for all branches
Assuming manual job creation is needed
Confusing deployment with pipeline creation
2. Which Jenkinsfile location is automatically used by a multi-branch pipeline job for each branch?
easy
A. Only in the main branch
B. In a separate centralized folder outside branches
C. In the root directory of each branch
D. In the Jenkins server workspace
Solution
Step 1: Identify Jenkinsfile location for multi-branch pipelines
Multi-branch pipelines look for a Jenkinsfile in the root directory of each branch to define that branch's pipeline.
Step 2: Evaluate options
In the root directory of each branch matches this behavior. Options B, C, and D do not reflect the automatic per-branch Jenkinsfile usage.
Final Answer:
In the root directory of each branch -> Option C
Quick Check:
Jenkinsfile location = root of each branch [OK]
Hint: Jenkinsfile must be in branch root for multi-branch jobs [OK]
Common Mistakes:
Thinking Jenkinsfile is centralized outside branches
Assuming only main branch Jenkinsfile is used
Believing Jenkinsfile is stored on Jenkins server
3. Given a multi-branch pipeline job configured to scan a Git repository with branches main and feature1, what happens when a new branch feature2 is pushed?
medium
A. The job automatically detects feature2 and creates a new pipeline for it
B. The job ignores feature2 until manually added
C. The job deletes pipelines for main and feature1
D. The job merges feature2 into main automatically
Solution
Step 1: Understand scan trigger behavior
Multi-branch pipeline jobs scan the repository and detect new branches automatically, creating pipelines for them.
Step 2: Analyze options
The job automatically detects feature2 and creates a new pipeline for it correctly states the automatic detection and pipeline creation for feature2. Options A, B, and D describe incorrect behaviors.
Final Answer:
The job automatically detects feature2 and creates a new pipeline for it -> Option A
Quick Check:
New branch detected = new pipeline created [OK]
Hint: New branches auto-create pipelines on scan [OK]
Common Mistakes:
Assuming manual addition of new branches
Thinking existing pipelines get deleted
Confusing pipeline creation with branch merging
4. You created a multi-branch pipeline job but it does not detect any branches. What is the most likely cause?
medium
A. The Jenkinsfile is missing in the main branch only
B. The repository URL is incorrect or inaccessible
C. The Jenkins server is offline
D. The job is set to build only tags, not branches
Solution
Step 1: Check repository access
If the multi-branch pipeline job cannot detect branches, the most common cause is an incorrect or inaccessible repository URL.
Step 2: Evaluate other options
The Jenkinsfile is missing in the main branch only is less likely because missing Jenkinsfile in main branch does not prevent branch detection. The Jenkins server is offline is unrelated if Jenkins is running. The job is set to build only tags, not branches is possible but less common than repository access issues.
Final Answer:
The repository URL is incorrect or inaccessible -> Option B
Quick Check:
Branch detection fails if repo URL is wrong [OK]
Hint: Check repo URL first if no branches detected [OK]
Common Mistakes:
Blaming missing Jenkinsfile for no branch detection
Ignoring repository access permissions
Assuming Jenkins server is offline without checking
5. You want to configure a multi-branch pipeline job to scan your GitHub repo every 15 minutes to detect new branches or changes. Which Jenkins feature should you use?
hard
A. Use a freestyle job to poll the repository
B. Manually run the scan from Jenkins dashboard each time
C. Configure a webhook in GitHub but disable Jenkins scanning
D. Set a periodic scan trigger with a cron expression like H/15 * * * *
Solution
Step 1: Identify scan trigger configuration
Multi-branch pipeline jobs support periodic scanning using cron syntax to detect branch changes automatically.
Step 2: Analyze options
Set a periodic scan trigger with a cron expression like H/15 * * * * correctly describes setting a periodic scan trigger with cron. Manually run the scan from Jenkins dashboard each time is manual, not automatic. Configure a webhook in GitHub but disable Jenkins scanning disables Jenkins scanning, so no detection. Use a freestyle job to poll the repository uses freestyle job, not multi-branch pipeline.
Final Answer:
Set a periodic scan trigger with a cron expression like H/15 * * * * -> Option D