📖 Scenario: You are working on a Jenkins server that manages multiple Git branches for a software project. To keep Jenkins aware of all branches and their changes, you need to set up branch indexing and scanning.This helps Jenkins find new branches and update existing ones automatically, just like checking your mailbox regularly for new letters.
🎯 Goal: Set up a Jenkins Pipeline Multibranch project configuration that indexes branches from a Git repository and scans them to detect changes.You will create the initial Jenkinsfile structure, add branch source configuration, implement branch indexing, and finally print the detected branches.
📋 What You'll Learn
Create a Jenkinsfile with a basic pipeline structure
Add a Git branch source configuration with a repository URL
Implement branch indexing to detect branches
Print the list of detected branches
💡 Why This Matters
🌍 Real World
In real projects, Jenkins needs to track multiple branches to build and test code automatically. Branch indexing helps Jenkins find new branches and keep builds up to date.
💼 Career
Understanding branch indexing and scanning is essential for DevOps engineers managing CI/CD pipelines to ensure code changes are detected and tested promptly.
Progress0 / 4 steps
1
Create Jenkinsfile with basic pipeline
Create a Jenkinsfile with a pipeline block and an empty agent any section.
Jenkins
Hint
Start by writing pipeline { and inside it add agent any to run on any available agent.
2
Add Git branch source configuration
Inside the Jenkinsfile, add a properties block with a multibranchPipelineJob that has a branchSources section. Add a Git source with the URL https://github.com/example/repo.git.
Jenkins
Hint
Use properties to define job properties. Inside, add multibranchPipelineJob with branchSources and a git source with the given URL.
3
Implement branch indexing
Add a triggers block inside the multibranchPipelineJob to enable periodic branch indexing every 1 minute using periodic(1).
Jenkins
Hint
Inside multibranchPipelineJob, add triggers { periodic(1) } to scan branches every minute.
4
Print detected branches
Add a stages block with a stage named 'Print Branches'. Inside, add a steps block that prints 'Branches scanned successfully.' using echo.
Jenkins
Hint
Use stages and stage('Print Branches') with steps { echo('Branches scanned successfully.') } to show the message.
Practice
(1/5)
1. What is the main purpose of branch indexing in Jenkins Multibranch Pipeline jobs?
easy
A. To manually trigger builds for a single branch
B. To delete old builds from the Jenkins server
C. To automatically discover and build all branches in a repository
D. To configure user permissions for branches
Solution
Step 1: Understand branch indexing concept
Branch indexing automatically finds all branches in a source code repository for Jenkins to build.
Step 2: Identify its main benefit
This avoids manual job creation for each branch, saving time and effort.
Final Answer:
To automatically discover and build all branches in a repository -> Option C
Quick Check:
Branch indexing = automatic branch discovery [OK]
Hint: Branch indexing means Jenkins finds branches itself [OK]
Common Mistakes:
Thinking branch indexing triggers manual builds only
Confusing branch indexing with build cleanup
Assuming it manages user permissions
2. Which Jenkins job type should you use to enable branch indexing and scanning?
easy
A. Multibranch Pipeline
B. Freestyle project
C. Matrix project
D. External job
Solution
Step 1: Identify job types in Jenkins
Freestyle and Matrix projects do not support automatic branch discovery.
Step 2: Recognize Multibranch Pipeline features
Multibranch Pipeline jobs are designed to scan repositories and index branches automatically.
Hint: Use Multibranch Pipeline for branch scanning [OK]
Common Mistakes:
Choosing Freestyle project which lacks branch scanning
Confusing Matrix project with Multibranch Pipeline
Selecting External job which is unrelated
3. Given a Multibranch Pipeline job configured to scan every 1 hour, what happens when a new branch is pushed to the repository?
medium
A. Jenkins immediately builds the new branch
B. Jenkins ignores the new branch until manual scan
C. Jenkins deletes the new branch from the repository
D. Jenkins detects and indexes the new branch during the next scheduled scan
Solution
Step 1: Understand scan trigger timing
The job is set to scan branches every 1 hour, not instantly.
Step 2: Predict behavior on new branch push
Jenkins will detect and index the new branch during the next scheduled scan, not immediately.
Final Answer:
Jenkins detects and indexes the new branch during the next scheduled scan -> Option D
Quick Check:
Scheduled scan finds new branches [OK]
Hint: Scheduled scans find new branches, not instant builds [OK]
Common Mistakes:
Assuming immediate build on branch push
Thinking Jenkins ignores new branches without manual scan
Believing Jenkins deletes new branches automatically
4. You configured a Multibranch Pipeline job but Jenkins does not detect new branches after pushing them. What is the most likely cause?
medium
A. The Jenkins server is offline
B. Branch indexing is disabled or scan trigger is not set
C. The repository URL is incorrect
D. The branches are deleted automatically after scan
Solution
Step 1: Check branch indexing settings
If branch indexing or scan triggers are disabled, Jenkins won't detect new branches automatically.
Step 2: Consider other causes
Incorrect repo URL or offline server would cause broader failures, not just missing branches.
Final Answer:
Branch indexing is disabled or scan trigger is not set -> Option B
Quick Check:
Branch indexing must be enabled for detection [OK]
Hint: Enable branch indexing and scan triggers to detect branches [OK]
Common Mistakes:
Ignoring branch indexing settings
Assuming Jenkins deletes branches automatically
Blaming repository URL without checking indexing
5. How can you configure a Jenkins Multibranch Pipeline job to automatically build only branches matching the pattern feature/* during branch indexing?
hard
A. Set the Branch Sources filter with feature/* under 'Include branches matching' pattern
B. Manually create jobs for each feature branch
C. Use a post-build script to delete other branches
D. Configure the job to scan all branches without filters
Solution
Step 1: Use branch source filtering
Jenkins Multibranch Pipeline allows filtering branches by patterns in the Branch Sources settings.
Step 2: Apply the pattern filter
Setting 'Include branches matching' to feature/* ensures only those branches are indexed and built.
Final Answer:
Set the Branch Sources filter with feature/* under 'Include branches matching' pattern -> Option A
Quick Check:
Branch filters limit builds to matching branches [OK]
Hint: Use branch source filters to build specific branch patterns [OK]
Common Mistakes:
Creating manual jobs instead of using filters
Not applying branch filters and building all branches
Using post-build scripts to filter branches incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.