Bird
Raised Fist0
Jenkinsdevops~10 mins

When to use scripted over declarative in Jenkins - Interactive Code Practice

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

Complete the code to start a scripted Jenkins pipeline.

Jenkins
node {
    stage('Build') {
        [1] 'echo Building...'
    }
}
Drag options to blanks, or click blank then click option'
Ash
Bsteps
Cscript
Dstage
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'steps' instead of 'sh' inside scripted pipeline.
Trying to use 'stage' as a command.
2fill in blank
medium

Complete the code to define a variable in scripted pipeline.

Jenkins
node {
    def message = [1]
    echo message
}
Drag options to blanks, or click blank then click option'
AHello from scripted
B'Hello from scripted'
C"Hello from scripted"
Dmessage
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting quotes around the string.
Using variable name instead of string value.
3fill in blank
hard

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

Jenkins
node {
    stage('Test') {
        [1] 'echo Testing...'
    }
}
Drag options to blanks, or click blank then click option'
Ascript.sh
Bsteps.sh
Csh
Drun
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'steps.sh' which is for declarative pipelines.
Using 'run' which is not a Jenkins step.
4fill in blank
hard

Fill both blanks to create a scripted pipeline with a conditional stage.

Jenkins
node {
    if (env.BRANCH_NAME == [1]) {
        stage([2]) {
            sh 'echo Deploying...'
        }
    }
}
Drag options to blanks, or click blank then click option'
A'main'
B"Deploy"
C'Deploy'
Dmain
Attempts:
3 left
💡 Hint
Common Mistakes
Using unquoted branch name or stage name.
Mixing single and double quotes incorrectly.
5fill in blank
hard

Fill all three blanks to define a scripted pipeline with a loop and shell command.

Jenkins
node {
    for (int i = 0; i < [1]; i++) {
        stage([2]) {
            sh [3]
        }
    }
}
Drag options to blanks, or click blank then click option'
A3
B"Loop Stage"
C'echo Running iteration ' + i
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong loop count.
Not quoting stage name.
Not quoting shell command.

Practice

(1/5)
1. Which situation is best suited for using a scripted Jenkins pipeline instead of a declarative one?
easy
A. When you want to use built-in syntax for parallel stages only
B. When you want a simple, easy-to-read pipeline with fixed stages
C. When you need complex loops and conditional logic that declarative can't handle
D. When you want to avoid writing any Groovy code

Solution

  1. Step 1: Understand pipeline types

    Declarative pipelines are simpler and use a fixed syntax, while scripted pipelines allow full Groovy code control.
  2. Step 2: Match use case to pipeline type

    Complex loops and dynamic conditions require scripted pipelines because declarative syntax is limited.
  3. Final Answer:

    When you need complex loops and conditional logic that declarative can't handle -> Option C
  4. Quick Check:

    Complex logic = scripted [OK]
Hint: Choose scripted for complex logic, declarative for simple flow [OK]
Common Mistakes:
  • Thinking declarative supports all Groovy features
  • Using scripted for simple pipelines unnecessarily
  • Confusing parallel stage support as exclusive to scripted
2. Which of the following is the correct way to start a scripted pipeline in Jenkins?
easy
A. node { stage('Build') { echo 'Hello' } }
B. pipeline { agent any; stages { stage('Build') { steps { echo 'Hello' } } } }
C. stages { stage('Build') { steps { echo 'Hello' } } }
D. build { stage('Build') { echo 'Hello' } }

Solution

  1. Step 1: Identify scripted pipeline syntax

    Scripted pipelines use Groovy code inside a node block, not the pipeline block.
  2. Step 2: Check each option

    node { stage('Build') { echo 'Hello' } } uses node { stage('Build') { echo 'Hello' } } which is correct scripted syntax.
  3. Final Answer:

    node { stage('Build') { echo 'Hello' } } -> Option A
  4. Quick Check:

    Scripted pipelines start with node block [OK]
Hint: Scripted pipelines start with node block, declarative with pipeline [OK]
Common Mistakes:
  • Using declarative pipeline syntax for scripted pipelines
  • Omitting the node block in scripted pipelines
  • Confusing stages block as scripted 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: 3
C. Syntax error due to for loop
D. No output because echo is invalid here

Solution

  1. Step 1: Understand scripted pipeline loop

    The for loop runs from 1 to 3, printing each count with echo.
  2. Step 2: Predict output

    Each iteration prints "Count: 1", "Count: 2", and "Count: 3" on separate lines.
  3. Final Answer:

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

    Loop prints each count line [OK]
Hint: For loops in scripted pipelines print each iteration output [OK]
Common Mistakes:
  • Assuming only last iteration prints
  • Thinking for loop syntax is invalid in scripted
  • Believing echo cannot be used inside node
4. Identify the error in this scripted pipeline snippet:
node {
  stage('Build') {
    echo 'Building...'
  }
  stage('Test')
    echo 'Testing...'
}
medium
A. stage keyword cannot be used in scripted pipelines
B. Incorrect use of echo command inside node
C. node block must be inside stage blocks
D. Missing braces {} around the 'Test' stage block

Solution

  1. Step 1: Check stage syntax in scripted pipeline

    Each stage block must have braces {} to group its commands.
  2. Step 2: Identify missing braces

    The 'Test' stage lacks braces around echo, causing syntax error.
  3. Final Answer:

    Missing braces {} around the 'Test' stage block -> Option D
  4. Quick Check:

    All stage blocks need braces in scripted [OK]
Hint: Always use braces {} for stage blocks in scripted pipelines [OK]
Common Mistakes:
  • Omitting braces for single commands in stages
  • Thinking stage keyword is invalid in scripted
  • Misplacing node and stage blocks
5. You want to create a Jenkins pipeline that dynamically creates stages based on a list of environments (dev, test, prod). Which pipeline type should you use and why?
hard
A. Declarative pipeline, because it supports dynamic stage creation easily
B. Scripted pipeline, because it allows loops and dynamic stage generation with Groovy
C. Declarative pipeline, because scripted pipelines cannot handle multiple stages
D. Neither, Jenkins does not support dynamic stages

Solution

  1. Step 1: Understand dynamic stage requirements

    Creating stages dynamically requires looping and conditional logic.
  2. Step 2: Match pipeline type to dynamic behavior

    Scripted pipelines allow Groovy loops to generate stages dynamically; declarative pipelines are static.
  3. Final Answer:

    Scripted pipeline, because it allows loops and dynamic stage generation with Groovy -> Option B
  4. Quick Check:

    Dynamic stages = scripted pipeline [OK]
Hint: Use scripted pipelines for dynamic or complex stage creation [OK]
Common Mistakes:
  • Assuming declarative supports dynamic stages easily
  • Believing scripted pipelines cannot handle multiple stages
  • Thinking Jenkins disallows dynamic pipeline structures
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