I was very excited to know about the ‘parallel’ feature in Jenkins Pipeline, but, there are many gotchas while making use of the pipeline feature (many of which are documented here: Jenkins Pipeline Example). After trying and reading a few different solutions, following worked for me (notice in screenshot that the browser jobs run in parallel !)
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'hello'
}
}
stage('Test') {
steps {
script {
def jobs = [:]
def browsers = ["Chrome", "Firefox"]
for (int i = 0; i < browsers.size(); i++) {
def browser = browsers.get(i)
def jobName = "printing $browser"
jobs[jobName] = doJob(browser)
}
parallel jobs
}
}
}
stage('Deploy') {
steps {
echo 'deploying'
}
}
}
}
def doJob(browser) {
return {
node {
echo "testing in $browser"
}
}
}