Bird
Raised Fist0
Jenkinsdevops~5 mins

Branch discovery configuration in Jenkins - Commands & Configuration

Choose your learning style10 modes available
Introduction
When you have many branches in your code repository, you want Jenkins to find and build the right ones automatically. Branch discovery configuration helps Jenkins find all branches to test without setting each one manually.
When you want Jenkins to automatically find new branches in your Git repository and build them.
When you have feature branches created by multiple developers and want to test each branch separately.
When you want to avoid manually adding each new branch to Jenkins jobs.
When you want to control which branches Jenkins builds by filtering them.
When you want to keep your CI pipeline up to date with all active branches.
Commands
This command fetches the current configuration of the Jenkins multibranch pipeline job named 'my-multibranch-pipeline' so you can see or edit the branch discovery settings.
Terminal
jenkins-cli get-job my-multibranch-pipeline
Expected OutputExpected
<?xml version="1.0" encoding="UTF-8"?> <org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject> <sources> <jenkins.branch.BranchSource> <source class="hudson.plugins.git.GitSCMSource"> <id>unique-id-1234</id> <remote>https://github.com/example/my-app.git</remote> <credentialsId>git-credentials</credentialsId> <traits> <jenkins.plugins.git.traits.BranchDiscoveryTrait> <strategyId>1</strategyId> </jenkins.plugins.git.traits.BranchDiscoveryTrait> </traits> </source> </jenkins.branch.BranchSource> </sources> </org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
This command updates the Jenkins multibranch pipeline job with a new configuration file that includes the branch discovery settings you want to apply.
Terminal
jenkins-cli update-job my-multibranch-pipeline < config.xml
Expected OutputExpected
No output (command runs silently)
This command triggers Jenkins to scan the repository and discover branches based on the configured branch discovery strategy, starting builds for each found branch.
Terminal
jenkins-cli build my-multibranch-pipeline
Expected OutputExpected
Started build #1 for my-multibranch-pipeline Waiting for build to start...
This command lists all branches Jenkins has discovered and is managing under the multibranch pipeline job.
Terminal
jenkins-cli list-branches my-multibranch-pipeline
Expected OutputExpected
Branches: - main - feature/login - bugfix/issue-123
Key Concept

If you remember nothing else from this pattern, remember: branch discovery lets Jenkins automatically find and build all relevant branches without manual setup.

Common Mistakes
Not setting the branch discovery trait in the multibranch pipeline configuration.
Jenkins will not scan or build any branches except the default one, missing new or feature branches.
Add the BranchDiscoveryTrait with the correct strategyId to enable branch scanning.
Using an incorrect or missing credentials ID for accessing the Git repository.
Jenkins cannot access the repository to discover branches, causing scan failures.
Ensure the credentialsId matches a valid Jenkins credential with access to the Git repository.
Not triggering a scan or build after updating the branch discovery configuration.
Jenkins will not apply the new settings until a scan or build is triggered, so branches won't be discovered.
Run a build or scan command to apply the new branch discovery settings immediately.
Summary
Use Jenkins CLI to get and update the multibranch pipeline job configuration for branch discovery.
Configure the BranchDiscoveryTrait with the desired strategy to control which branches Jenkins finds.
Trigger a build or scan to let Jenkins discover and build branches automatically.

Practice

(1/5)
1.

What is the main purpose of branch discovery in Jenkins?

easy
A. To merge branches automatically before building
B. To manually select branches for building
C. To automatically find and build all branches in a repository
D. To delete old branches from the repository

Solution

  1. Step 1: Understand branch discovery concept

    Branch discovery is designed to find all branches automatically in a source code repository.
  2. Step 2: Identify the purpose in Jenkins

    Jenkins uses branch discovery to keep builds updated without manual intervention.
  3. Final Answer:

    To automatically find and build all branches in a repository -> Option C
  4. Quick Check:

    Branch discovery = automatic branch finding [OK]
Hint: Branch discovery means Jenkins finds branches automatically [OK]
Common Mistakes:
  • Thinking branch discovery requires manual branch selection
  • Confusing branch discovery with branch deletion
  • Assuming branch discovery merges branches
2.

Which strategyId value in Jenkins branch discovery configuration finds all branches including PRs?

easy
A. 4
B. 2
C. 1
D. 3

Solution

  1. Step 1: Recall strategyId meanings

    In Jenkins, strategyId 3 means discover all branches including pull requests.
  2. Step 2: Match strategyId to description

    StrategyId 1 is for only branches, 2 is for branches and PRs from origin, 3 includes all branches and PRs, 4 is for PRs only.
  3. Final Answer:

    3 -> Option D
  4. Quick Check:

    strategyId 3 = all branches + PRs [OK]
Hint: strategyId 3 includes all branches and PRs [OK]
Common Mistakes:
  • Confusing strategyId 1 with including PRs
  • Using strategyId 4 which only finds PRs
  • Assuming strategyId 2 includes PRs
3.

Given this Jenkins branch discovery snippet:

{"strategyId": 1}

Which branches will Jenkins discover?

medium
A. Only branches that are not pull requests
B. All branches including pull requests
C. Only pull request branches
D. No branches will be discovered

Solution

  1. Step 1: Understand strategyId 1 meaning

    StrategyId 1 means discover only branches, excluding pull requests.
  2. Step 2: Apply to the snippet

    The snippet uses strategyId 1, so Jenkins finds only normal branches, not PRs.
  3. Final Answer:

    Only branches that are not pull requests -> Option A
  4. Quick Check:

    strategyId 1 = branches only [OK]
Hint: strategyId 1 excludes PRs, finds only branches [OK]
Common Mistakes:
  • Assuming strategyId 1 includes PRs
  • Thinking strategyId 1 finds no branches
  • Confusing strategyId 1 with strategyId 3
4.

You configured Jenkins with {"strategyId": 5} for branch discovery. What is the likely result?

medium
A. Jenkins discovers all branches and PRs correctly
B. Jenkins throws a configuration error or ignores the setting
C. Jenkins discovers only pull requests
D. Jenkins discovers no branches but builds anyway

Solution

  1. Step 1: Check valid strategyId values

    Valid strategyId values are 1, 2, 3, and 4. 5 is invalid.
  2. Step 2: Predict Jenkins behavior on invalid strategyId

    Jenkins will likely throw an error or ignore the invalid value, causing no discovery.
  3. Final Answer:

    Jenkins throws a configuration error or ignores the setting -> Option B
  4. Quick Check:

    Invalid strategyId = error or ignore [OK]
Hint: Use only valid strategyId 1-4 to avoid errors [OK]
Common Mistakes:
  • Assuming strategyId 5 works like 3 or 4
  • Expecting Jenkins to discover branches anyway
  • Ignoring configuration errors
5.

You want Jenkins to build only branches that start with feature/ and ignore others. Which branch discovery configuration should you use?

hard
A. Use {"strategyId": 1} with an additional branch filter for feature/*
B. Use {"strategyId": 3} without any filters
C. Use {"strategyId": 2} and disable branch filtering
D. Use {"strategyId": 4} with a filter for feature/*

Solution

  1. Step 1: Choose strategyId for branches only

    StrategyId 1 discovers only branches (excluding PRs), suitable for filtering branches.
  2. Step 2: Apply branch filter for prefix

    Adding a filter for branches starting with 'feature/' limits builds to those branches only.
  3. Final Answer:

    Use {"strategyId": 1} with an additional branch filter for feature/* -> Option A
  4. Quick Check:

    strategyId 1 + filter = feature branches only [OK]
Hint: Combine strategyId 1 with branch filter for prefix [OK]
Common Mistakes:
  • Using strategyId 3 without filters builds all branches and PRs
  • Disabling filters causes all branches to build
  • Using strategyId 4 only finds PRs, not branches
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard