This is my use case:

I have tests that require a collection of machines to run. There are 
different types of machine collections, with 1 or more instances of each 
type. Each collection can be used by only one driving set of tests at a 
time.

The tests themselves do not run in the collection of machines; they can all 
run via ssh on the same host (or different ones, it makes no difference to 
me). Once the tests are finished I would like to publish reports that they 
generate.

So the tests could run on a regular Jenkins ssh slave with a bunch of 
executors. But at the same time I would like to define each collection of 
machines as a "slave", giving each collection type a different label so 
that test jobs would queue and wait for the appropriate type. Essentially, 
each machine collection slave is just a set of key value pairs (of 
credentials and other bits of info) to pass to the dumb ssh slave and used 
as test parameters, telling the tests where to run.

I was wondering if there are plugins that allow a) defining a slave as a 
set of key value pairs and b) defining a requirement for a job to have 
exclusive access to 2 types of slaves before it will run on one of them. I 
can't recall seeing any additional types of slaves apart from the dumb one 
or VMs controlled by the vSphere Cloud Plugin. Are there any more?

One solution I thought of is to define an ssh slave for each machine 
collection (they could all be on the same host), each with 1 executor and 2 
labels: one generic (i.e. perf) and the other specific (i.e. perf1). Then 
there would be one Slave Setup 
Plugin<https://wiki.jenkins-ci.org/display/JENKINS/Slave+Setup+Plugin>configuration
 per slave, each with a label matching the specific slave 
labels (i.e. perf1) that would copy a properties file to the root of the 
slave directory tree. One open question I have is where the Slave Setup 
Plugin copies files to; if it is to an absolute path then I wouldn't be 
able to reuse the same host for a number of slaves.

Any thoughts or suggestions on how this could be set up (or what might be 
missing or which plugin almost fits to set this up) would be highly 
appreciated!

Thanks,
David

Reply via email to