Hudson baut standardmäßig alle möglichen Kombinationen aller Achsen auf erschöpfende Weise. Manchmal sind dies jedoch einfach zu viele Kombinationen oder es gibt Kombinationen, die aus fachlicher Sicht nicht erwünscht sind. In diesen Situationen können Sie die Matrix ausdünnen, indem Sie über einen Groovy-Ausdruck unerwünschte Kombinationen herausfiltern.

Geben Sie hier einen Groovy-Ausdruck an, so werden nur diejenigen Kombinationen gebaut, für die der Ausdruck true ergibt. Die momentanen Werte der Achsen stehen dem Ausdruck dabei als initialisierte Variablen zur Verfügung.

#### Werte-basiertes Filtern

Beispiel: Sie bauen auf unterschiedlichen Betriebssystemen mit unterschiedlichen Compilern. Ihre Slave-Knoten sind mit den Labels label=[linux,solaris] gekennzeichnet und Sie haben eine Achse compiler=[gcc,cc] angelegt. Jeder der folgenden Ausdrücke wird Builds mit cc auf linux herausfiltern. Je nach persönlicher Herangehensweise werden Sie die Ausdrücke unterschiedlich intuitiv finden.

Ansatz: "Wenn linux und cc gleichzeitig zutrifft, ist die Kombination ungültig." |
    !(label=="linux" && compiler=="cc")
Ansatz: "Eine gültige Kombination verwendet entweder solaris oder gcc." |
    label=="solaris" || compiler=="gcc"
Ansatz: "Wenn auf solaris, dann nur cc erlauben." |
    (label=="solaris").implies(compiler=="cc")

#### Ausdünnen der Matrix

Zusätzlich zu den werte-basierten Filterregeln, können Sie die Variable "`index`" verwenden, um die Matrix auszudünnen.

Beispiel: `index%2==0` halbiert die Größe der Matrix, in dem nur noch jede zweite Kombination gebaut wird. Analog drittelt `index%3!=0` die Größe der Matrix, in dem nur noch jede dritte Kombination gebaut wird, usw.