Parallel Execution
Learn the concepts, syntax formats, block structures, and optimization rules required to run multiple automated pipeline stages simultaneously.
What is Parallel Execution?
By default, steps inside a Jenkinsfile execute sequentially from top to bottom. However, independent operations—such as executing browser tests across three distinct operating systems or running isolated integration modules—do not need to wait for one another. The parallel directive allows you to branch your workflow out to run tasks simultaneously, significantly cutting down overall pipeline processing times.
Core Parallel Components
Jenkins manages concurrent pipelines by nesting explicit structural parameters within the main execution thread:
- The `parallel` Block Wrapper: The primary directive container placed inside a parent stage that shifts execution logic from linear sequencing to concurrent branching mode.
- Independent Nested Stages: Named sub-stages grouped inside the parallel block, each housing its own unique set of tools, environment controls, or steps.
- Multi-Agent Distribution: The ability for each branched stage to request its own distinct execution node (e.g., executing a Windows unit test and a Linux container pass concurrently).
- The `failFast` Parameter Gate: A safety option flag that instructs Jenkins to instantly terminate all other active, running branches if any single parallel stage hits a fatal exception error.
Key Concepts
Agent Executor Bottlenecks
Understanding that parallel execution demands multiple free execution paths. If your cluster grid runs short on available agent slots, branched stages will block and wait in the queue until resources free up.
Log Streaming Interleaving
Recognizing that concurrent branches print stdout text lines to the central dashboard simultaneously, making it critical to use the Pipeline Stage View or blue ocean interfaces to inspect segregated step log records.
Practical Jenkins Example
The following full declarative blueprint demonstrates how to structure simultaneous regression testing modules using the `parallel` and `failFast` block definitions:
pipeline {
agent any
stages {
stage('Initialize and Compile') {
steps {
echo 'INFO: Pulling code repository updates and running build compilers...'
sh 'echo "Application binary compilation finished cleanly."'
}
}
// Parent stage hosting the parallel branching sub-matrix
stage('Run Parallel Test Matrix') {
failFast true // Instantly stops remaining tests if one fails
parallel {
stage('Component Tests - Linux') {
agent { label 'linux-node' }
steps {
echo 'INFO: Launching unit component validations inside a Linux environment...'
sh 'sleep 3 && echo "Linux test module passed."'
}
}
stage('Integration Tests - Windows') {
agent { label 'windows-node' }
steps {
echo 'INFO: Launching integration workflows inside a Windows environment...'
bat 'echo "Windows test module passed."'
}
}
stage('Static Code Analysis') {
steps {
echo 'INFO: Executing standalone linting and SonarQube quality scans...'
sh 'echo "Quality gate validation checks passed successfully."'
}
}
}
}
stage('Finalize Distribution') {
steps {
echo 'INFO: Archiving successful metrics and preparing delivery packages...'
}
}
}
}
Practice Exercise: Deploy a Concurrent Multi-Branch Workflow
Step-by-Step Task Sequence:
- Open the script block dashboard configuration for an active pipeline or initialize a new Pipeline item from your portal home screen.
- Copy-paste the complete practical declarative pipeline example provided above into your script editing workspace terminal panel.
- If your testing system lacks custom label agents (like `linux-node` or `windows-node`), clean up those specific lines to read simply
agent anybefore clicking Save. - Trigger a manual pipeline pass by selecting the Build Now action link located on the left-side option menu layout hierarchy.
- Return to the main status view landing page once the build starts to watch the grid matrix render parallel columns running simultaneously under the Stage View dashboard panel.
Summary
You have completed the Parallel Execution lesson. Continue through the syllabus to learn how to capture final execution statuses and process pipeline notifications inside the Post Block and Build Results lesson.