Hi!

I'm using something like this to run tests in parallel:

stage('Test') {
  steps {
    script {
      testing_closures = [one: { print("staring one"); sleep 10; 
print("finishing 
one") },
                          two: { print("staring two"); sleep 10; 
print("finishing 
two") },
                          three: { print("staring three"); sleep 10; 
print("finishing 
three") },
                          four: { print("staring four"); sleep 10; 
print("finishing 
four") },
                          five: { print("staring five"); sleep 10; 
print("finishing 
five") },
                          six: { print("staring six"); sleep 10; 
print("finishing 
six") }]
      parallel(testing_closures)
    }
  }
}


The main goal is to throttle those closures - I don't want for all six of 
them to run concurrently - only 3 at a time.

I was thinking about using nodes for this - i.e. wrapping each closure in 
node{} block:

one: { node { print("staring one"); sleep 10; print("finishing one") } }

Works OK as long as I use master node and limit the executors to 4 (1 for 
main job, 3 for the node{} concurrent steps). 

Unfortunately I need master node executors to be available for other jobs, 
so I cannot limit them.

*So - how do I achieve my goal? Is there a way to create local node similar 
to master, but not master?*

*Or is there another way to throttle parallel step? *


*The only solution I came up with is to create 3 lockable resources of the 
same label and lock them in each*
*of the closures. But in reality my closures are already locking resources 
(for test-machines, there's 7 of them, *
*but I want one build to use only up to 3 of them), so I would have to 
have:*
  lock(label: 'test-host') { 
    lock (label: 'test-throttler') { 
      ...code... 
    }
  }
*Looks dirty, increases maintenance nightmare and it's adding unnecessary 
resources (which we already have too much) that do*
*not reflect the "real, physical" resource.*

-- 
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/de512d65-2b99-4f85-8a32-69c20cfcbc1e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to