-
Improvement
-
Resolution: Fixed
-
Major
-
None
I would like to have Hudson decide how best to utilize build nodes by specifying that a build node must (or must not) have one or more labels. Basically I envision this having a main collection of Pivot labels (like the current interface) and another list of labels that are required on a node for it to be selected by the queue. Consider the following list of nodes with corresponding labels
Nodes
A - label1, label2, label3, OS1
B - label1, label3, OS2
C - label1, label2, OS2
D - label1, OS3
E - label1, OS3
Matrix Job
Pivot Labels (I need to cover all of these once) - OS1, OS2, OS3
Node Selection Rules - (labels.contains(label1) and !labels.contains(label3))
In this scenario, when this Matrix Job kicks off it will select nodes A, C, and D or E (whichever is available first) to cover its Pivot labels, but will ignore B since it does not pass the node selection rules. It will also ignore one of D or E because it only needs one of them to fulfill its OS3 requirement.
My main use case for this is to maximize the utilization of our Hudson nodes and have Hudson decide whether or not a node has everything necessary to run a job (without having to reconfigure the job). There are times when a particular matrix sub-job will block when there are nodes available which could support it, but due to the limitations in configuration (only being able to select specific nodes or a one-dimensional set of labels) I can't get it to do what I want. Is this viable to implement, and is it even the best way to solve the problem?