1. Running Parallel Jobs
If you want multiple jobs to run in parallel, define them separately under the jobs section.
jobs:
- job: Job1
displayName: 'Job 1'
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo "Running Job 1"
- job: Job2
displayName: 'Job 2'
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo "Running Job 2"
2. Running Parallel Steps within a Job
Option 1: Using dependsOn for Parallel Execution in Jobs
jobs:
- job: Build
displayName: 'Build Job'
steps:
- script: echo "Building the application"
- job: Test
displayName: 'Test Job'
dependsOn: [] # Runs in parallel with Build
steps:
- script: echo "Running tests"
- job: Deploy
displayName: 'Deploy Job'
dependsOn: [Build, Test] # Runs only after both are completed
steps:
- script: echo "Deploying the application"
Option 2: Using template for Parallel Execution
Create a separate YAML template file:
# parallel-template.yml
steps:
- script: echo "Task 1"
- script: echo "Task 2"
Then, reference it in the main pipeline:
jobs:
- job: ParallelJob
steps:
- template: parallel-template.yml
Option 3: Using background: true for Background Tasks
steps:
- script: echo "Starting Task 1"
displayName: 'Task 1'
background: true # Runs in the background
- script: echo "Starting Task 2"
displayName: 'Task 2'
background: true # Runs in the background
Best Approach?
- Use separate jobs if tasks need different agents or environments.
- Use parallel steps in a job if they share the same environment.
- Use background tasks for lightweight independent tasks.
Let me know if you need a specific example for your pipeline! 🚀