Bird
Raised Fist0
Jenkinsdevops~20 mins

Branch selection and branch specifier in Jenkins - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Branch Specifier Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Jenkins branch specifier syntax output
What is the output of the Jenkins branch specifier origin/feature/* when used in a Multibranch Pipeline job?
AMatches all branches named 'feature/*' from any remote.
BMatches only the branch literally named 'origin/feature/*'.
CMatches all branches starting with 'origin/feature/' from any remote.
DMatches all branches starting with 'feature/' from the remote named 'origin'.
Attempts:
2 left
💡 Hint
Think about how Jenkins interprets remote names and wildcards in branch specifiers.
🧠 Conceptual
intermediate
2:00remaining
Understanding Jenkins branch selection behavior
In Jenkins Multibranch Pipeline, what does the branch specifier */main select?
ASelects the 'main' branch from any remote repository.
BSelects all branches named 'main' only from the default remote.
CSelects branches named 'main' only from remotes named '*'.
DSelects all branches starting with 'main' from any remote.
Attempts:
2 left
💡 Hint
The asterisk (*) is a wildcard for remote names.
❓ Troubleshoot
advanced
2:00remaining
Troubleshooting branch not detected in Jenkins
A Jenkins Multibranch Pipeline job does not detect the branch feature/login even though it exists in the remote repository. The branch specifier is set to origin/feature/*. What is the most likely cause?
AThe branch specifier should be <code>feature/*</code> without the remote prefix.
BThe remote name 'origin' is incorrect or not configured in Jenkins.
CThe branch specifier must be <code>refs/heads/feature/*</code> to detect branches.
DThe Jenkins job requires a manual refresh to detect new branches.
Attempts:
2 left
💡 Hint
Check the remote repository configuration in Jenkins.
🔀 Workflow
advanced
2:00remaining
Configuring Jenkins to build only specific branches
You want Jenkins Multibranch Pipeline to build only the branches main and any branch starting with release/. Which branch specifier configuration achieves this?
AUse a single branch specifier: <code>refs/heads/main refs/heads/release/*</code>.
BUse a single branch specifier: <code>main, release/*</code>.
CUse two branch specifiers: <code>*/main</code> and <code>*/release/*</code>.
DUse a single branch specifier: <code>main|release/*</code>.
Attempts:
2 left
💡 Hint
Jenkins allows multiple branch specifiers separated by commas or multiple entries.
✅ Best Practice
expert
3:00remaining
Best practice for branch specifier in Jenkins Multibranch Pipeline
What is the best practice for writing branch specifiers in Jenkins Multibranch Pipeline to ensure consistent branch detection across different remotes?
AAlways use <code>*/branch-name</code> to match the branch on any remote.
BAlways use <code>origin/branch-name</code> to specify the default remote explicitly.
CUse full refspecs like <code>refs/remotes/origin/branch-name</code> for clarity.
DUse only branch names without remote prefixes, like <code>branch-name</code>.
Attempts:
2 left
💡 Hint
Consider flexibility when remotes may vary.

Practice

(1/5)
1. What does the Branch Specifier field in Jenkins do?
easy
A. It tells Jenkins which branch or branches to build.
B. It specifies the build timeout duration.
C. It defines the build environment variables.
D. It sets the Jenkins user permissions.

Solution

  1. Step 1: Understand the purpose of Branch Specifier

    The Branch Specifier is used to tell Jenkins which branch or branches to build from the source code repository.
  2. Step 2: Eliminate unrelated options

    Timeout, environment variables, and user permissions are unrelated to branch selection.
  3. Final Answer:

    It tells Jenkins which branch or branches to build. -> Option A
  4. Quick Check:

    Branch Specifier = Select branch to build [OK]
Hint: Branch Specifier selects branches to build in Jenkins [OK]
Common Mistakes:
  • Confusing branch specifier with build timeout
  • Thinking it sets environment variables
  • Assuming it controls user permissions
2. Which of the following is the correct syntax to specify the master branch in Jenkins Branch Specifier?
easy
A. refs/remotes/master
B. refs/tags/master
C. refs/heads/master
D. refs/branches/master

Solution

  1. Step 1: Recall Git reference format for branches

    Branches in Git are referenced as refs/heads/branch-name. So the master branch is refs/heads/master.
  2. Step 2: Identify incorrect references

    refs/tags/ is for tags, refs/remotes/ is for remote tracking branches, and refs/branches/ is not a valid Git ref.
  3. Final Answer:

    refs/heads/master -> Option C
  4. Quick Check:

    Branch refs start with refs/heads/ [OK]
Hint: Use refs/heads/branch-name for branch specifier [OK]
Common Mistakes:
  • Using refs/tags/ instead of refs/heads/
  • Confusing remote refs with local branch refs
  • Using invalid refs/branches/ prefix
3. Given the branch specifier refs/heads/feature/*, which branches will Jenkins build?
medium
A. Only the branch named exactly 'feature/*'.
B. Only the 'master' branch.
C. All branches except those starting with 'feature/'.
D. All branches starting with 'feature/', like 'feature/login' and 'feature/ui'.

Solution

  1. Step 1: Understand wildcard usage in branch specifier

    The asterisk (*) acts as a wildcard matching any characters after 'feature/'. So it matches all branches starting with 'feature/'.
  2. Step 2: Analyze each option

    Only the branch named exactly 'feature/*'. is incorrect because it treats '*' literally. All branches except those starting with 'feature/'. is opposite meaning. Only the 'master' branch. is unrelated.
  3. Final Answer:

    All branches starting with 'feature/', like 'feature/login' and 'feature/ui'. -> Option D
  4. Quick Check:

    Wildcard * matches multiple branches [OK]
Hint: Use * wildcard to match multiple branches [OK]
Common Mistakes:
  • Treating * as a literal character
  • Assuming it excludes matching branches
  • Confusing branch names with tags
4. You set the branch specifier to refs/heads/release but Jenkins builds no branches. What is the likely problem?
medium
A. The branch name is incorrect or does not exist in the repo.
B. The Jenkins server is offline.
C. The build script has syntax errors.
D. The workspace is full.

Solution

  1. Step 1: Check branch existence

    If Jenkins builds no branches, the specified branch refs/heads/release might not exist in the repository.
  2. Step 2: Rule out unrelated issues

    Server offline, build script errors, or workspace full would cause different errors or failures, not silent no build.
  3. Final Answer:

    The branch name is incorrect or does not exist in the repo. -> Option A
  4. Quick Check:

    Branch specifier must match existing branch [OK]
Hint: Verify branch exists before setting specifier [OK]
Common Mistakes:
  • Assuming Jenkins server status causes no build
  • Blaming build script syntax for branch selection
  • Ignoring branch existence check
5. You want Jenkins to build all branches except those starting with hotfix/. Which branch specifier pattern should you use?
hard
A. !refs/heads/*
B. refs/heads/*, !refs/heads/hotfix/*
C. refs/heads/*
D. refs/heads/hotfix/*

Solution

  1. Step 1: Understand inclusion and exclusion patterns

    Jenkins supports including all branches with refs/heads/* and excluding specific branches with !refs/heads/hotfix/*.
  2. Step 2: Analyze options

    refs/heads/*, !refs/heads/hotfix/* includes all branches but excludes hotfix branches. refs/heads/hotfix/* only includes hotfix branches. refs/heads/* includes all branches without exclusion. !refs/heads/* excludes all branches.
  3. Final Answer:

    refs/heads/*, !refs/heads/hotfix/* -> Option B
  4. Quick Check:

    Use ! to exclude branches in specifier [OK]
Hint: Use ! prefix to exclude branches in specifier [OK]
Common Mistakes:
  • Not using exclusion pattern with !
  • Only specifying excluded branches
  • Excluding all branches accidentally
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