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 [email protected].
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.