Bird
Raised Fist0
Jenkinsdevops~10 mins

Why scripted pipelines offer flexibility in Jenkins - Test Your Understanding

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a scripted pipeline stage.

Jenkins
stage('Build') {
    [1] 'echo Building...'
}
Drag options to blanks, or click blank then click option'
Ash
Bscript
Cbat
Dinput
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'script' instead of 'sh' for shell commands.
Confusing 'bat' which is for Windows batch commands.
2fill in blank
medium

Complete the code to start a scripted pipeline with node allocation.

Jenkins
node( [1] ) {
    stage('Test') {
        echo 'Running tests'
    }
}
Drag options to blanks, or click blank then click option'
A'build'
B'agent'
C'node'
D'master'
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'agent' which is a declarative pipeline term.
Using 'node' as a string inside the node block.
3fill in blank
hard

Fix the error in the scripted pipeline to run a shell command conditionally.

Jenkins
if (params.DEPLOY == 'true') {
    [1] 'echo Deploying application'
}
Drag options to blanks, or click blank then click option'
Ascript
Bsh
Cbat
Dinput
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'script' instead of 'sh' inside the if block.
Using 'bat' on Unix systems.
4fill in blank
hard

Fill both blanks to create a map with stage names and their status in a scripted pipeline.

Jenkins
def stages = [[1]: 'SUCCESS', [2]: 'FAILURE']
Drag options to blanks, or click blank then click option'
A'Build'
B'Test'
C'Deploy'
D'Cleanup'
Attempts:
3 left
💡 Hint
Common Mistakes
Using non-string keys without quotes.
Mixing up stage names and statuses.
5fill in blank
hard

Fill all three blanks to define a scripted pipeline with a try-catch block for error handling.

Jenkins
try {
    [1] 'exit 1'
} catch (Exception [2]) {
    echo 'Caught error: ' + [3].toString()
}
Drag options to blanks, or click blank then click option'
Ash
Be
Dscript
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'script' instead of 'sh' inside try.
Using different variable names inconsistently in catch.

Practice

(1/5)
1. Why do scripted pipelines in Jenkins offer more flexibility compared to declarative pipelines?
easy
A. Because they only support predefined stages without customization.
B. Because they have a simpler syntax with fewer features.
C. Because they allow using loops, conditions, and custom error handling.
D. Because they automatically generate pipeline code without user input.

Solution

  1. Step 1: Understand scripted pipeline features

    Scripted pipelines allow writing code with loops, conditions, and error handling, giving more control.
  2. Step 2: Compare with declarative pipelines

    Declarative pipelines have a simpler, fixed structure and less flexibility for complex logic.
  3. Final Answer:

    Because they allow using loops, conditions, and custom error handling. -> Option C
  4. Quick Check:

    Scripted pipelines = flexible code control [OK]
Hint: Look for options mentioning loops and conditions for flexibility [OK]
Common Mistakes:
  • Confusing simplicity with flexibility
  • Thinking declarative pipelines allow all custom code
  • Assuming scripted pipelines auto-generate code
2. Which of the following is the correct syntax to start a scripted pipeline block in Jenkins?
easy
A. node {
B. stage {
C. pipeline {
D. scripted {

Solution

  1. Step 1: Identify scripted pipeline block syntax

    Scripted pipelines start with node { to define the workspace and steps.
  2. Step 2: Eliminate other options

    pipeline { is for declarative pipelines; stage { defines a stage; scripted { is invalid syntax.
  3. Final Answer:

    node { -> Option A
  4. Quick Check:

    Scripted pipeline starts with node block [OK]
Hint: Scripted pipelines start with 'node {' block [OK]
Common Mistakes:
  • Using 'pipeline {' which is declarative syntax
  • Confusing 'stage {' as pipeline start
  • Assuming 'scripted {' is valid syntax
3. What will be the output of this scripted pipeline snippet?
node {
  for (int i = 1; i <= 3; i++) {
    echo "Count: ${i}"
  }
}
medium
A. Count: 1\nCount: 2\nCount: 3
B. Count: 0\nCount: 1\nCount: 2
C. Syntax error due to for loop
D. No output because echo is invalid

Solution

  1. Step 1: Analyze the for loop range

    The loop runs from i=1 to i=3 inclusive, so it iterates 3 times.
  2. Step 2: Check the echo output each iteration

    Each iteration prints "Count: " followed by the current i value, producing lines for 1, 2, and 3.
  3. Final Answer:

    Count: 1\nCount: 2\nCount: 3 -> Option A
  4. Quick Check:

    Loop 1 to 3 prints counts 1,2,3 [OK]
Hint: Check loop start and end values carefully [OK]
Common Mistakes:
  • Starting loop at 0 instead of 1
  • Thinking echo is invalid in scripted pipeline
  • Assuming syntax error in for loop
4. Identify the error in this scripted pipeline snippet:
node {
  if (env.BRANCH_NAME == 'main')
    echo 'Deploying to production'
  else
    echo 'Deploying to staging'
}
medium
A. node block cannot contain if statements
B. Missing curly braces {} around if and else blocks
C. echo command cannot be used inside if
D. Incorrect use of env variable syntax

Solution

  1. Step 1: Check if-else syntax in scripted pipeline

    In scripted pipelines, if and else blocks must use curly braces {} when spanning multiple lines or statements.
  2. Step 2: Identify missing braces

    The snippet lacks braces around the echo statements, which can cause syntax errors or unexpected behavior.
  3. Final Answer:

    Missing curly braces {} around if and else blocks -> Option B
  4. Quick Check:

    If-else blocks need braces in scripted pipelines [OK]
Hint: Always use braces {} for if-else blocks in scripted pipelines [OK]
Common Mistakes:
  • Assuming env.BRANCH_NAME syntax is wrong
  • Thinking echo can't be inside if
  • Believing node block forbids if statements
5. You want to retry a build step up to 3 times if it fails, using a scripted pipeline. Which snippet correctly implements this retry logic?
hard
A. node { for (int i=0; i<3; i++) { sh 'run-build.sh' } }
B. node { while (true) { sh 'run-build.sh' } }
C. node { try { sh 'run-build.sh' } catch (err) { retry(3) } }
D. node { retry(3) { sh 'run-build.sh' } }

Solution

  1. Step 1: Understand Jenkins retry step

    The retry(n) { ... } block retries the enclosed steps up to n times on failure automatically.
  2. Step 2: Evaluate each option

    node { retry(3) { sh 'run-build.sh' } } correctly uses retry(3) around the build command. node { for (int i=0; i<3; i++) { sh 'run-build.sh' } } runs the command 3 times without retry on failure. node { try { sh 'run-build.sh' } catch (err) { retry(3) } } misuses retry inside catch. node { while (true) { sh 'run-build.sh' } } loops infinitely.
  3. Final Answer:

    node { retry(3) { sh 'run-build.sh' } } -> Option D
  4. Quick Check:

    Use retry(n) block for automatic retries [OK]
Hint: Use retry(n) block to retry steps automatically [OK]
Common Mistakes:
  • Using loops instead of retry block
  • Placing retry inside catch block incorrectly
  • Creating infinite loops without exit
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