-
New Feature
-
Resolution: Duplicate
-
Major
-
None
-
Platform: All, OS: All
It would be great if the configuration of a matrix project allowed multiple
axises based on nodes/labels.
My Use Case:
I'm configuring a multiple arch/multiple compiler matrix. But some of my
compilers are licensed and only on specific slaves.
Example:
archs: window_32, linux_32, etc(these are all configured as labels)
compilers: compiler_a, compiler_b (also configured as labels)
We have multiple slaves labeled as windows_32 but only one also has compiler_a.
So ideally the Queue would choose that node when executing the
windows_32/compiler_a combination.
An approach I've considered is using the name/values axises to deduce which
nodes are capable of executing a build. This would work by checking if an axis
value is also a label. If it is a label then the combination would be limited
to nodes with that label. If the value is not a label it would behave as
before. This would allow for complex matching of a combination to specific
nodes. My idea for implementation is overriding the getAssignedLabel() in
MatrixConfiguration to return a special MatrixLabel that has a new getNodes()
method only returning the nodes with all the labels in the combination. This
would then not require any changes to the choose(Task) method in Queue.
I'm going to try and test my implementation idea. Any feedback on the
implications of extending Label would be appreciated. It's not marked as
Seriablizable so I think it would be okay.