Re: Generating parallel flow with Build Flow Plugin

2015-09-17 Thread Jay Neese
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.


Re: Generating parallel flow with Build Flow Plugin

2015-09-16 Thread Jay Neese
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/075f36ab-eb3e-4e1c-97b3-c724b5eb635b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Generating parallel flow with Build Flow Plugin

2015-09-16 Thread Jay Neese
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 1 and 2, it is running the second job twice.  In my case the 
jobs will be different, but the parameter (version) passed to the jobs 
 will be the same for both jobs. 

*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/2e97f727-2ee5-4289-9104-1cc112b504c2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.