Bird
Raised Fist0
Jenkinsdevops~10 mins

Parallel stages execution in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Parallel stages execution
Start Pipeline
↓
Define Parallel Stages
↓
Wait for all stages to finish
↓
Continue with next steps
The pipeline starts, defines multiple stages to run at the same time, runs them all together, waits for all to finish, then moves on.
Execution Sample
Jenkins
pipeline {
  agent any
  stages {
    stage('Parallel Stages') {
      parallel {
        stage('Stage A') { steps { echo 'A' } }
        stage('Stage B') { steps { echo 'B' } }
        stage('Stage C') { steps { echo 'C' } }
      }
    }
  }
}
This Jenkins pipeline runs three stages named A, B, and C at the same time.
Process Table
StepActionStage RunningOutputNotes
1Start pipelineNonePipeline begins execution
2Enter 'Parallel Stages' stageNonePreparing parallel stages
3Start Stage AStage AAStage A runs echo 'A'
3Start Stage BStage BBStage B runs echo 'B'
3Start Stage CStage CCStage C runs echo 'C'
4Wait for all stages to finishStage A, B, CAll parallel stages complete
5Continue pipelineNonePipeline moves to next steps or ends
💡 All parallel stages complete, pipeline continues
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
Stage A StatusNot startedNot startedRunningCompletedCompleted
Stage B StatusNot startedNot startedRunningCompletedCompleted
Stage C StatusNot startedNot startedRunningCompletedCompleted
Pipeline StatusNot startedRunningRunningWaitingRunning or Finished
Key Moments - 3 Insights
Why do all stages start at the same step number 3 in the execution table?
Because the stages run in parallel, they start simultaneously at the same step, as shown in rows with step 3.
What happens if one parallel stage fails before others finish?
The pipeline waits for all parallel stages to finish or fail before continuing, ensuring synchronization as shown in step 4.
How does Jenkins know when to move on after parallel stages?
Jenkins waits until all parallel stages report completion, indicated in step 4, before moving to the next pipeline step.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, at which step do all parallel stages start running?
AStep 4
BStep 2
CStep 3
DStep 5
💡 Hint
Check the 'Stage Running' column in the execution table rows with step 3.
According to the variable tracker, what is the status of Stage B after step 4?
ANot started
BCompleted
CRunning
DFailed
💡 Hint
Look at the 'Stage B Status' row under 'After Step 4' in the variable tracker.
If Stage C took longer to finish, which step in the execution table would be delayed?
AStep 4
BStep 3
CStep 5
DStep 2
💡 Hint
Step 4 waits for all parallel stages to finish, so a delay in Stage C affects step 4.
Concept Snapshot
Jenkins Parallel Stages Execution:
- Use 'parallel' block inside a stage to run multiple stages at once.
- All parallel stages start simultaneously.
- Pipeline waits for all to finish before continuing.
- Useful to speed up builds by doing tasks in parallel.
- Syntax: stage { parallel { stage1 { steps } stage2 { steps } } }
Full Transcript
This visual execution shows how Jenkins runs parallel stages. The pipeline starts and reaches a stage that defines multiple parallel stages. All these stages start running at the same time, shown at step 3. Each stage runs its commands independently and outputs its result. Jenkins waits until all parallel stages finish, as shown in step 4, before moving on to the next steps. The variable tracker shows the status of each stage changing from not started to running to completed. Key points include that parallel stages start simultaneously, the pipeline waits for all to finish, and this helps speed up the build process by doing tasks at the same time.

Practice

(1/5)
1. What is the main purpose of using the parallel block in a Jenkins pipeline?
easy
A. To run multiple stages at the same time to save time
B. To run stages one after another in a sequence
C. To pause the pipeline until manual approval
D. To restart the pipeline from the beginning

Solution

  1. Step 1: Understand the role of parallel block

    The parallel block allows multiple tasks or stages to run simultaneously in Jenkins.
  2. Step 2: Compare with other options

    Options A, B, and C describe restart, sequential execution, and manual pause, which are unrelated to parallel execution.
  3. Final Answer:

    To run multiple stages at the same time to save time -> Option A
  4. Quick Check:

    Parallel stages = run together [OK]
Hint: Parallel means tasks run at the same time, not one by one [OK]
Common Mistakes:
  • Thinking parallel means sequential execution
  • Confusing parallel with manual approval
  • Assuming parallel restarts the pipeline
2. Which of the following is the correct syntax to define parallel stages inside a Jenkins pipeline?
easy
A. stage('Build') { steps { echo 'Building' } parallel { stage('Test') { steps { echo 'Testing' } } } }
B. stage('Build') { parallel { stage('Test') { steps { echo 'Testing' } } } }
C. stage('Build') { steps { parallel { echo 'Building' } } }
D. parallel([ "Build": { steps { echo 'Building' } }, "Test": { steps { echo 'Testing' } } ])

Solution

  1. Step 1: Recall correct parallel syntax

    The parallel block should use a map of branches, each containing steps.
  2. Step 2: Analyze options

    parallel([ "Build": { steps { echo 'Building' } }, "Test": { steps { echo 'Testing' } } ]) correctly defines parallel branches. Options B, C, and D misuse the placement of parallel or stages.
  3. Final Answer:

    parallel([ "Build": { steps { echo 'Building' } }, "Test": { steps { echo 'Testing' } } ]) -> Option D
  4. Quick Check:

    parallel wraps stages directly [OK]
Hint: Parallel wraps multiple stages side by side, not inside one stage [OK]
Common Mistakes:
  • Putting parallel inside steps block
  • Nesting stages inside other stages incorrectly
  • Using parallel with single stage only
3. Given this Jenkins pipeline snippet, what will be the output order of the echo statements?
pipeline {
  agent any
  stages {
    stage('Parallel Stage') {
      steps {
        parallel (
          "A": {
            echo 'Running A'
          },
          "B": {
            echo 'Running B'
          }
        )
      }
    }
  }
}
medium
A. Running A\nRunning B
B. Running B\nRunning A
C. Running A and Running B in any order or simultaneously
D. Syntax error due to nested stages inside parallel

Solution

  1. Step 1: Understand parallel execution output

    Stages inside parallel run at the same time, so their output order is not guaranteed.
  2. Step 2: Check syntax validity

    The syntax is valid for parallel branches inside a stage's steps block, so no syntax error occurs.
  3. Final Answer:

    Running A and Running B in any order or simultaneously -> Option C
  4. Quick Check:

    Parallel stages output order is unpredictable [OK]
Hint: Parallel means output order can vary, no fixed sequence [OK]
Common Mistakes:
  • Assuming output order is always A then B
  • Thinking nested stages cause syntax error here
  • Expecting sequential output in parallel block
4. You wrote this Jenkins pipeline snippet but it fails with a syntax error:
pipeline {
  agent any
  stages {
    stage('Test') {
      steps {
        parallel {
          stage('Unit') {
            steps { echo 'Unit tests' }
          }
          stage('Integration') {
            steps { echo 'Integration tests' }
          }
        }
      }
    }
  }
}
What is the error and how to fix it?
medium
A. stage names inside parallel must be unique; rename stages
B. parallel block cannot contain nested stage blocks directly; use map syntax with branches
C. parallel block requires agent declaration inside each stage
D. steps block cannot contain echo commands

Solution

  1. Step 1: Identify parallel block syntax rules

    The parallel directive expects a map of branch names to closures containing steps, not loose stage blocks inside {}.
  2. Step 2: Fix the pipeline structure

    Change to parallel( "Unit": { echo 'Unit tests' }, "Integration": { echo 'Integration tests' } ) to fix the syntax error.
  3. Final Answer:

    parallel block cannot contain nested stage blocks directly; use map syntax with branches -> Option B
  4. Quick Check:

    parallel uses branch map syntax [OK]
Hint: parallel must be outside steps block, directly under stage [OK]
Common Mistakes:
  • Placing parallel inside steps block
  • Ignoring pipeline syntax hierarchy
  • Assuming echo commands cause error
5. You want to run three tasks in parallel: 'Build', 'Test', and 'Deploy'. The 'Deploy' stage should only run if both 'Build' and 'Test' succeed. How do you structure the Jenkins pipeline to achieve this?
hard
A. Use parallel for 'Build' and 'Test' stages, then a separate 'Deploy' stage after parallel block
B. Put all three stages inside a single parallel block
C. Run 'Deploy' inside parallel block with 'Build' and 'Test' but add a condition to skip if others fail
D. Run 'Deploy' before 'Build' and 'Test' in parallel block

Solution

  1. Step 1: Understand dependency requirements

    'Deploy' must wait for 'Build' and 'Test' to finish successfully, so it cannot run in parallel with them.
  2. Step 2: Structure pipeline accordingly

    Run 'Build' and 'Test' inside a parallel block, then add a separate 'Deploy' stage after that block to run only if previous succeed.
  3. Final Answer:

    Use parallel for 'Build' and 'Test' stages, then a separate 'Deploy' stage after parallel block -> Option A
  4. Quick Check:

    Dependent stage runs after parallel block [OK]
Hint: Run dependent stages after parallel block, not inside it [OK]
Common Mistakes:
  • Putting dependent stage inside parallel block
  • Running deploy before build and test
  • Trying to conditionally skip stages inside parallel
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