Когда вы указываете 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 комбинаций.
Для этого свойства возможно использовать Проектное каскадирование. Детали доступны в этом документе.