Bird
Raised Fist0
Jenkinsdevops~10 mins

Groovy syntax in pipelines in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Groovy syntax in pipelines
Start Pipeline Script
↓
Define Variables & Functions
↓
Use Steps & Conditions
↓
Execute Pipeline Stages
↓
Handle Success or Failure
↓
End Pipeline
This flow shows how a Jenkins pipeline script using Groovy syntax starts, defines variables and functions, executes steps and stages, handles conditions, and ends.
Execution Sample
Jenkins
pipeline {
  agent any
  stages {
    stage('Example') {
      steps {
        echo "Hello, Groovy!"
      }
    }
  }
}
A simple Jenkins pipeline script that runs a stage named 'Example' and prints a message.
Process Table
StepActionGroovy Code EvaluatedResult/Output
1Start pipelinepipeline { ... }Pipeline initialized
2Set agentagent anyAgent set to any available node
3Enter stages blockstages { ... }Stages block ready
4Enter stage 'Example'stage('Example') { ... }Stage 'Example' started
5Execute stepssteps { echo "Hello, Groovy!" }Prints: Hello, Groovy!
6Complete stage}Stage 'Example' completed
7Complete pipeline}Pipeline finished successfully
💡 Pipeline script completes after all stages and steps run successfully
Status Tracker
VariableStartAfter Step 2After Step 4After Step 6Final
agentundefinedanyanyanyany
stageNameundefinedundefinedExampleExampleExample
echoOutputundefinedundefinedundefinedHello, Groovy!Hello, Groovy!
Key Moments - 3 Insights
Why do we use 'agent any' in the pipeline?
The 'agent any' line tells Jenkins to run the pipeline on any available worker node. This is shown in execution_table step 2 where the agent is set.
What does the 'echo' step do inside the steps block?
The 'echo' step prints a message to the console output. In execution_table step 5, it prints 'Hello, Groovy!'. This is how you output text in a pipeline.
Why is the pipeline wrapped inside 'pipeline { ... }'?
The 'pipeline { ... }' block defines the entire pipeline script structure. It organizes the agent, stages, and steps. This is the root block shown in execution_table step 1.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output at step 5?
APipeline initialized
BPrints: Hello, Groovy!
CStage 'Example' started
DAgent set to any available node
💡 Hint
Check the 'Result/Output' column for step 5 in the execution_table.
At which step does the pipeline set the agent to 'any'?
AStep 1
BStep 4
CStep 2
DStep 6
💡 Hint
Look at the 'Action' and 'Groovy Code Evaluated' columns in execution_table for agent setting.
If we add another stage before 'Example', how would the execution_table change?
AThere would be additional steps for the new stage before step 4
BThe pipeline would fail to start
CThe 'agent any' would move to step 5
DThe echo output would change to the new stage name
💡 Hint
Adding a stage adds new steps in the stages block before existing stages, reflected in execution_table steps.
Concept Snapshot
Groovy syntax in Jenkins pipelines:
- Use 'pipeline { agent any stages { stage('name') { steps { ... } } } }'
- 'agent any' runs on any node
- 'stage' groups steps
- 'steps' contain commands like 'echo'
- Script runs top to bottom
- Use simple Groovy expressions inside steps
Full Transcript
This visual execution shows a Jenkins pipeline script using Groovy syntax. The pipeline starts with the 'pipeline' block, sets the agent to 'any' node, defines stages, and runs steps inside stages. The example prints 'Hello, Groovy!' using the echo step. Variables like agent and stageName track the current state. Key moments clarify why 'agent any' is used, what echo does, and the purpose of the pipeline block. The quiz tests understanding of step outputs, agent setting, and adding stages.

Practice

(1/5)
1. In a Jenkins pipeline script using Groovy, what does the stage block represent?
easy
A. A loop for repeating tasks
B. A logical phase or step in the pipeline process
C. A function definition
D. A variable declaration

Solution

  1. Step 1: Understand the purpose of stage in Jenkins pipelines

    The stage block is used to define a distinct phase or step in the pipeline, such as build, test, or deploy.
  2. Step 2: Differentiate from other Groovy constructs

    It is not a variable, function, or loop but a way to organize pipeline tasks clearly.
  3. Final Answer:

    A logical phase or step in the pipeline process -> Option B
  4. Quick Check:

    stage = logical step [OK]
Hint: Remember: stage means a step or phase in pipeline [OK]
Common Mistakes:
  • Confusing stage with variable or function
  • Thinking stage is a loop
  • Assuming stage is a Groovy keyword unrelated to Jenkins
2. Which of the following is the correct syntax to define a variable name with value Jenkins in a Groovy pipeline script?
easy
A. name := "Jenkins"
B. var name = 'Jenkins'
C. def name = "Jenkins"
D. let name = 'Jenkins'

Solution

  1. Step 1: Recall Groovy variable declaration syntax

    Groovy uses def to declare variables, so def name = "Jenkins" is correct.
  2. Step 2: Identify incorrect syntax

    var and let are JavaScript keywords, and := is not Groovy syntax.
  3. Final Answer:

    def name = "Jenkins" -> Option C
  4. Quick Check:

    def declares variables in Groovy [OK]
Hint: Use def to declare variables in Groovy [OK]
Common Mistakes:
  • Using JavaScript keywords like var or let
  • Using := which is not Groovy syntax
  • Forgetting quotes around string values
3. What will be the output of this Groovy pipeline snippet?
def result = []
for (i in 1..3) {
  result << i * 2
}
return result
medium
A. [2, 4, 6]
B. [1, 2, 3]
C. [3, 6, 9]
D. SyntaxError

Solution

  1. Step 1: Understand the loop and range

    The loop runs from 1 to 3 inclusive, so i takes values 1, 2, 3.
  2. Step 2: Calculate each iteration's result

    Each i is multiplied by 2 and added to the list: 2, 4, 6.
  3. Final Answer:

    [2, 4, 6] -> Option A
  4. Quick Check:

    Loop 1..3 * 2 = [2,4,6] [OK]
Hint: Multiply each loop value by 2 and collect in list [OK]
Common Mistakes:
  • Confusing range syntax with exclusive end
  • Forgetting to append to list
  • Expecting syntax error due to unfamiliar Groovy syntax
4. Identify the error in this Jenkins pipeline Groovy snippet:
pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        echo 'Building...'
      }
    }
  }
  post {
    always {
      echo 'Cleaning up'
    }
  }
}
medium
A. No error, syntax is correct
B. Missing script block inside steps
C. Missing environment block
D. Incorrect use of post block outside stages

Solution

  1. Step 1: Review pipeline structure

    The pipeline has agent, stages with one stage and post block correctly placed.
  2. Step 2: Check syntax correctness

    Using echo inside steps is valid without needing script. The post block is correctly outside stages.
  3. Final Answer:

    No error, syntax is correct -> Option A
  4. Quick Check:

    Pipeline syntax valid as given [OK]
Hint: Remember post block is outside stages, steps can have echo directly [OK]
Common Mistakes:
  • Thinking echo needs script block
  • Assuming post must be inside stages
  • Expecting environment block is mandatory
5. How can you write a Groovy pipeline snippet to run a shell command ls -l only if a variable runList is true?
hard
A. stage('List') { if runList sh 'ls -l' }
B. when (runList) { sh 'ls -l' }
C. sh 'ls -l' if runList
D. if (runList) { sh 'ls -l' }

Solution

  1. Step 1: Use Groovy if statement syntax

    Groovy uses if (condition) { ... } to run code conditionally.
  2. Step 2: Apply condition to run shell command

    Inside the steps block, if (runList) { sh 'ls -l' } runs the shell command only if runList is true.
  3. Final Answer:

    if (runList) { sh 'ls -l' } -> Option D
  4. Quick Check:

    Groovy if syntax with braces [OK]
Hint: Use if(condition) { ... } to run commands conditionally [OK]
Common Mistakes:
  • Using when instead of if for condition
  • Omitting parentheses in if statement
  • Trying inline if without proper Groovy syntax
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