По умолчанию Hudson собирает все возможные варианты осей исчерпывающе (полностью). Но иногда это не требуется, например некоторые комбинации не имеют смысла. В таких ситуациях Вы можете ограничить набор используя фильтрацию, это Groovy выражение которое возвращает true или false.

Когда вы указываете Groovy выражение, только комбинации которые возвращают true будут собраны. При обработке выражений оси выставлены как переменные (с их значениями установленными в текущее значение комбинации)ю

#### Фильтрация основанная на значениях

Например, предположим Вы собираете приложение на различных операционных системах на различных компиляторах. Предполагая что Ваши подчиненные узлы label=[linux,solaris] и Вы создали оси как compiler=[gcc,cc]. Любой из следеющих выражений будут отфильтроованыns cc builds on linux. В зависимости от того как Вы думаете об этих константах Вы вполне вероятно посчитаете какой-то вариант более понятным чем другие.

Читать как "если оба linux и cc, это неправильно" |
    !(label=="linux" && compiler=="cc")
Читать как "для комбинации чтобы быть валидной, нужно быть или на solaris или на gcc." |
    label=="solaris" || compiler=="gcc"
Читать как "если на Solaris, только делать cc" |
    (label=="solaris").implies(compiler=="cc")

#### Обработка матрицы

В дополнение к специфичным правилам фильтрации на основе значений, также возможно использовать специальную переменную "`index`", которая может быть использована для обработки матрицы.

Например, `index%2==0` может обрезать размер матрицы наполовину путем удаления одной из комбинаций каждую 2 комбинацию. Аналогичным образом, `index%3!=0` может обрезать матрицу к размеру 66% путем выбрасывания одну из 3 комбинаций.

Для этого свойства возможно использовать Проектное каскадирование. Детали доступны в этом документе.