Par défaut, Hudson builde toutes les combinaisons possibles de tous les axes, de façon exhaustive. Parfois, cela fait trop de combinaisons ou certaines combinaisons n'ont pas de sens. Dans ce cas, vous pouvez réduire la matrice en filtrant les combinaisons que vous ne voulez pas à l'aide d'une expression Groovy qui retourne vrai ou faux.

Quand vous spécifiez une expression Groovy ici, seules les combinaisons qui retournent true seront construites. Lors de l'évaluation de l'expression, les axes sont exposés comme des variables (avec leurs valeurs positionnées sur la combinaison courante).

#### Filtre basé sur les valeurs

Par exemple, disons que vous buildez sur des systèmes d'exploitation différents, pour des compilateurs différents. Supposons que les libellés de vos esclaves sont label=[linux,solaris] et que vous avez un axe compiler=[gcc,cc]. Chacune des expressions suivantes filtreront (c-à-d retireront) les builds cc sur linux. Selon la façon dont vous envisagez cette contrainte, vous trouverez certaines expressions plus claires que d'autres.

Lire "si simultanément linux et cc, alors c'est invalide"

    !(label=="linux" && compiler=="cc")

Lire "pour qu'une combinaison soit valide, elle doit être soit sur solaris, soit utiliser gcc."

    label=="solaris" || compiler=="gcc"

Lire "quand on est sur solaris, n'utiliser que cc"

    (label=="solaris").implies(compiler=="cc")

#### Limitation de la matrice

En plus des règles de filtrage basées sur les valeurs, on peut également utiliser une variable spéciale "`index`" qui peut être utilisée pour diminuer la matrice.

Par exemple, `index%2==0` diminuerait la matrice de moitié en retirant 1 combinaison sur 2, de façon à ce que la couverture reste raisonnable. De même, `index%3!=0` réduirait la matrice à 66% en supprimant 1 combinaison sur 3.