Bird
Raised Fist0
Jenkinsdevops~10 mins

Branch discovery configuration in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Branch discovery configuration
Start Jenkins Job Setup
↓
Enable Branch Discovery
↓
Scan Repository Branches
↓
Apply Filters (if any)
↓
List Discovered Branches
↓
Trigger Builds for Selected Branches
↓
End
This flow shows how Jenkins scans and discovers branches in a repository to decide which branches to build.
Execution Sample
Jenkins
properties([
  pipelineTriggers([]),
  branchSources([gitHub({
    repoOwner: 'user',
    repository: 'repo',
    traits: [branchDiscovery()]
  })])
])
This Jenkins pipeline snippet configures branch discovery for a GitHub repository.
Process Table
StepActionEvaluationResult
1Start job setupN/AJob configuration begins
2Enable branch discovery traitbranchDiscovery() trait addedJenkins will scan branches
3Scan repositoryFetch all branches from repoBranches list retrieved
4Apply filtersNo filters appliedAll branches included
5List discovered branchesBranches: main, dev, feature1Branches ready for build
6Trigger buildsBuilds triggered for each branchBuilds started
7EndAll branches processedJob setup complete
💡 All branches discovered and builds triggered; job setup ends
Status Tracker
VariableStartAfter Step 3After Step 5Final
branchesList[][main, dev, feature1][main, dev, feature1][main, dev, feature1]
buildsTriggered0033
Key Moments - 2 Insights
Why does Jenkins need to scan branches before building?
Jenkins scans branches to know which branches exist and should be built. Without scanning (see step 3 in execution_table), Jenkins cannot discover new or updated branches.
What happens if filters are applied during branch discovery?
Filters limit which branches Jenkins includes for building. In the execution_table step 4, no filters means all branches are included. If filters were applied, some branches might be excluded.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, at which step does Jenkins retrieve the list of branches?
AStep 2
BStep 3
CStep 5
DStep 6
💡 Hint
Check the 'Action' and 'Result' columns for branch retrieval in the execution_table
According to variable_tracker, how many builds are triggered after step 5?
A0
B1
C3
D5
💡 Hint
Look at the 'buildsTriggered' row under 'After Step 5' in variable_tracker
If a filter excluded the 'feature1' branch, how would the branchesList change after step 5?
A[main, dev]
B[]
C[main, dev, feature1]
D[feature1]
💡 Hint
Filters reduce branches included; see explanation in key_moments about filters
Concept Snapshot
Branch discovery in Jenkins:
- Enable branchDiscovery() trait in job config
- Jenkins scans repo branches
- Filters can include/exclude branches
- Discovered branches trigger builds
- Keeps CI updated with repo branches
Full Transcript
Branch discovery configuration in Jenkins involves enabling a trait that scans the repository for all branches. Jenkins fetches the list of branches, applies any filters if configured, and then triggers builds for the selected branches. This process ensures Jenkins knows which branches exist and keeps the build process up to date. The execution flow starts with job setup, enabling branch discovery, scanning branches, filtering, listing branches, triggering builds, and ending the setup. Variables like branchesList and buildsTriggered track the discovered branches and how many builds start. Filters can limit which branches are built. Understanding these steps helps beginners see how Jenkins manages multiple 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