Just to follow up, I found a solution. The code looks like this: version = "4.1.0" println "Deploying version " + version def jobsList = ["test1,test2"] - list of jobs, but first element has all jobs def jobNamesString= jobsList.get(0) // Get the comma delimited string of job names def jobs= jobNamesString.split(',') // Creates an array of jobNames that can be iterated // construct and collect closures for LATER execution buildClosures = [] for (int i = 0; i < jobs.size(); i++) { def jobName = jobs[i] def curClosure = { build(jobName,Version:version) } buildClosures.add(curClosure) }
// execute the closures in buildClosures in parallel parallel(buildClosures) *And here is the Console output:* Deploying version 4.1.0 parallel { Schedule job test1 Schedule job test2 Build test1 #12 started Build test2 #10 started test1 #12 completed test2 #10 completed } Finished: SUCCESS This post was a big help: http://jenkins-ci.361315.n4.nabble.com/BUILD-FLOW-parallel-closure-simple-example-td4699743.html On Wednesday, September 16, 2015 at 10:34:26 PM UTC-5, Jay Neese wrote: > > I am using a similar configuration as OP, except that multiple *different* > jobs must be ran in parallel. I have two separate build jobs (test1 and > test2) that are being fed into the parallel function and rather than > running jobs test1 and test2, it is running test2 twice. In my case the > jobs will be different, but the parameter (version) that is passed to the > jobs will not change. > > *Here is the code:* > > version = "4.1.0" > println "Deploying version " + version > def components = ["test1,test2"] > println components > def component = components.get(0) > println component > def values = component.split(',') > def jobsInParallel = []; > for ( myComponent in values ) { > println myComponent > def parallelJob = { > def jobParams = [:] > jobParams = myComponent > println jobParams > build (jobParams,Version:version) > } > jobsInParallel.add(parallelJob) > } > parallel(jobsInParallel) > > > *And here is the Console output:* > > Deploying version 4.1.0 > [test1,test2] > test1,test2 > test1 > test2 > parallel { > test2 > test2 > Schedule job test2 > Schedule job test2 > Build test2 #1 started > Build test2 #1 started > test2 #1 completed > test2 #1 completed > } > Finished: SUCCESS > > > > Any ideas on why the test1 job isn't being included in the parallel build? > Any help would be appreciated. > > Thank You, > > Jay > > > On Monday, February 17, 2014 at 4:13:35 PM UTC-6, Stuart Rowe wrote: >> >> Hi Rodrigo, >> >> BuildFlow's parallel function takes a list or map of closures - it will >> execute each in parallel. >> >> For your situation, you should iterate over your list of servers, >> creating a >> closure for each and adding it to list. This list can the be passed as an >> argument to parallel(). >> >> e.g. >> >> // create a closure for the deploy job for each server >> def serverDeployJobs = [] >> for (server in servers) { >> def deployJob = { >> def jobParams = [:] >> // set up params for deploy job on current server here... >> >> // call build >> build(jobParams, DeployProjectName) >> } >> serverDeployJobs.add(deployJob) >> } >> >> // schedule deploy jobs in parallel >> parallel(serverDeployJobs) >> >> Hope that helps, >> Stuart >> >> >> >> -- >> View this message in context: >> http://jenkins-ci.361315.n4.nabble.com/Generating-parallel-flow-with-Build-Flow-Plugin-tp4687604p4691098.html >> >> Sent from the Jenkins users mailing list archive at Nabble.com. >> > -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/704d414b-84ab-4b30-9fe6-bfc71fed5bab%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.