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).
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") |
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.