Bird
Raised Fist0
Jenkinsdevops~5 mins

Branch-specific pipeline behavior in Jenkins - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is branch-specific pipeline behavior in Jenkins?
It means running different pipeline steps or stages depending on which branch of the code repository is being built.
Click to reveal answer
beginner
How can you detect the current branch in a Jenkins pipeline script?
You can use the environment variable 'BRANCH_NAME' inside the pipeline script to get the current branch name.
Click to reveal answer
intermediate
Show a simple Jenkins pipeline snippet that runs a test stage only on the 'develop' branch.
pipeline { agent any stages { stage('Test') { when { branch 'develop' } steps { echo 'Running tests on develop branch' } } } }
Click to reveal answer
beginner
What Jenkins pipeline directive helps to run steps only on a specific branch?
The 'when' directive with the 'branch' condition allows running steps only on a specific branch.
Click to reveal answer
beginner
Why is branch-specific pipeline behavior useful in CI/CD?
It lets you customize builds for different branches, like running full tests on 'main' but only quick checks on feature branches, saving time and resources.
Click to reveal answer
Which environment variable in Jenkins pipeline holds the current branch name?
AGIT_BRANCH
BCURRENT_BRANCH
CBRANCH_NAME
DPIPELINE_BRANCH
What Jenkins pipeline directive is used to run steps only on a specific branch?
Awhen
Bstage
Cagent
Denvironment
In a Jenkins pipeline, how do you specify a stage to run only on the 'main' branch?
Awhen { branch 'main' }
Bif (branch == 'main')
Cstage('main')
Dagent { label 'main' }
Why might you want different pipeline behavior on feature branches versus the main branch?
ATo deploy feature branches automatically
BTo save time by running fewer tests on feature branches
CTo disable builds on feature branches
DTo merge feature branches automatically
Which Jenkins pipeline syntax supports branch-specific behavior?
ANone of the above
BScripted pipeline only
CFreestyle jobs
DDeclarative pipeline
Explain how to configure a Jenkins pipeline to run different steps on 'main' and 'develop' branches.
Think about using 'when { branch 'branchName' }' inside stages.
You got /3 concepts.
    Describe why branch-specific pipeline behavior is important in continuous integration.
    Consider how different branches have different testing needs.
    You got /4 concepts.

      Practice

      (1/5)
      1.

      Which Jenkins pipeline syntax runs a stage only on the main branch?

      easy
      A. branch == 'main' { runStage() }
      B. if (branch == 'main')
      C. onlyIf branch == 'main'
      D. when { branch 'main' }

      Solution

      1. Step 1: Understand Jenkins branch condition syntax

        Jenkins uses when { branch 'branchName' } to run stages on specific branches.
      2. Step 2: Match syntax to run on main branch

        The correct syntax is when { branch 'main' } to target the main branch.
      3. Final Answer:

        when { branch 'main' } -> Option D
      4. Quick Check:

        Branch condition = when { branch 'main' } [OK]
      Hint: Use 'when { branch "branchName" }' for branch-specific stages [OK]
      Common Mistakes:
      • Using if statements instead of 'when' block
      • Incorrect syntax like 'onlyIf' or inline conditions
      • Confusing branch name quotes or missing quotes
      2.

      Which snippet correctly uses Jenkins declarative pipeline syntax to run a stage only on branches dev or feature/*?

      stage('Test') {
        when {
          ???
        }
        steps {
          echo 'Running tests'
        }
      }
      easy
      A. anyOf { branch 'dev'; branch 'feature/*' }
      B. branch 'dev' && branch 'feature/*'
      C. allOf { branch 'dev'; branch 'feature/*' }
      D. branch 'dev' || branch 'feature/*'

      Solution

      1. Step 1: Identify correct syntax for multiple branch conditions

        Jenkins uses anyOf { branch 'name'; branch 'pattern' } to run if any branch matches.
      2. Step 2: Choose syntax matching either 'dev' or 'feature/*'

        Using anyOf { branch 'dev'; branch 'feature/*' } runs the stage on either branch.
      3. Final Answer:

        anyOf { branch 'dev'; branch 'feature/*' } -> Option A
      4. Quick Check:

        Multiple branches = anyOf with branch conditions [OK]
      Hint: Use anyOf { branch 'x'; branch 'y' } for multiple branches [OK]
      Common Mistakes:
      • Using logical operators like || or && directly inside when
      • Using allOf which requires all conditions true
      • Incorrect syntax without braces or semicolons
      3.

      Given this Jenkins pipeline snippet, what will be the output if the branch is feature/login?

      pipeline {
        agent any
        stages {
          stage('Build') {
            when { branch 'main' }
            steps { echo 'Building main branch' }
          }
          stage('Test') {
            when { branch 'feature/*' }
            steps { echo 'Testing feature branch' }
          }
        }
      }
      medium
      A. Testing feature branch
      B. Building main branch
      C. Building main branch\nTesting feature branch
      D. No output

      Solution

      1. Step 1: Check branch conditions for each stage

        'Build' runs only on 'main' branch; 'Test' runs on branches matching 'feature/*'.
      2. Step 2: Match current branch 'feature/login'

        'feature/login' matches 'feature/*', so only 'Test' stage runs and prints 'Testing feature branch'.
      3. Final Answer:

        Testing feature branch -> Option A
      4. Quick Check:

        Branch 'feature/login' matches 'feature/*' only [OK]
      Hint: Match branch patterns carefully to predict stage execution [OK]
      Common Mistakes:
      • Assuming 'main' stage runs on all branches
      • Ignoring wildcard pattern matching
      • Expecting both stages to run always
      4.

      Identify the error in this Jenkins pipeline snippet that tries to run a stage only on the release branch:

      stage('Deploy') {
        when {
          branch release
        }
        steps {
          echo 'Deploying release branch'
        }
      }
      medium
      A. Steps block should be outside the stage
      B. Incorrect stage name 'Deploy'
      C. Missing quotes around branch name in when condition
      D. Branch condition should be inside steps

      Solution

      1. Step 1: Review syntax for branch condition in when block

        The branch name must be a string inside quotes: branch 'release'.
      2. Step 2: Identify missing quotes causing syntax error

        Here, branch release lacks quotes, causing a syntax error.
      3. Final Answer:

        Missing quotes around branch name in when condition -> Option C
      4. Quick Check:

        Branch names need quotes in when { branch 'name' } [OK]
      Hint: Always quote branch names in when { branch 'name' } [OK]
      Common Mistakes:
      • Omitting quotes around branch names
      • Placing steps outside stage block
      • Misplacing branch condition inside steps
      5.

      You want a Jenkins pipeline stage to run on all branches except main and develop. Which when condition correctly implements this?

      hard
      A. allOf { not branch 'main'; not branch 'develop' }
      B. not { anyOf { branch 'main'; branch 'develop' } }
      C. anyOf { not branch 'main'; not branch 'develop' }
      D. branch != 'main' && branch != 'develop'

      Solution

      1. Step 1: Understand negation of multiple branches

        To exclude branches, wrap the branches in anyOf and negate with not.
      2. Step 2: Apply correct syntax for excluding 'main' and 'develop'

        not { anyOf { branch 'main'; branch 'develop' } } runs on all branches except these two.
      3. Final Answer:

        not { anyOf { branch 'main'; branch 'develop' } } -> Option B
      4. Quick Check:

        Exclude branches = not { anyOf { ... } } [OK]
      Hint: Use not { anyOf { branch 'x'; branch 'y' } } to exclude branches [OK]
      Common Mistakes:
      • Using allOf with negations incorrectly
      • Using logical operators like && directly
      • Misplacing not inside anyOf instead of outside
      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