Логически израз, който определя кои агенти могат да изграждат този проект. Изразът ще се изчисли с всеки етикет и име на всеки наличен агент и резултатът ще е или истина , или лъжа . Само когато изразът се изчисли като истина , агентът ще може да изгражда този проект.

Ако проектът трябва задължително да се изгражда на определен подчинен компютър или на основния, въведете съответно името на компютъра или `built-in` .

Като цяло трябва да избягвате употребата на името на подчинения компютър като вместо това използвате етикетите на компютрите. Както е документирано на страницата за настройки на всеки агент и страницата за Системни настройки на основния компютър, етикетите могат да се използват за определяне на кои операционни системи върви Jenkins, каква е архитектурата на процесора както и на всякакви други характеристики.
Като използвате етикети елиминирате нуждата да преправяте етикетните изрази всеки път като добавяте, махате или преименувате машини.

Етикетният израз може да е съвсем прост, напр. единичен етикет или име на машина като `android-builder` или `linux-machine-42` .
Може да ползвате и някои оператори , за да създавате по-сложни изрази.

### Поддържани оператори

Поддържат се следните оператори в намаляващ приоритет:

`(израз)`
  скоби — за изрично указване на приоритета на операция
`!израз`
  НЕ — отрицание, стойността на `израза` трябва да не е истина.
`a && b`
  И — и двата израза `a` и `b` трябва да са истина.
`a || b`
  ИЛИ — някой от изразите `a` или `b` трябва да е истина.
`a -> b`
  ИМПЛИКАЦИЯ — АКО - ТО, същото като `!a || b` .
  Напр. `windows -> x64` означава: „ако се ползва компютър под Windows, той трябва да е 64-битов“, което също позволява проектът да бъде изграждан на машини без етикета `windows` , без значение дали имат или не етикета `x64` .
`a <-> b`
  ЕКВИВАЛЕНТНОСТ — АКО И САМО АКО, същото като `a && b || !a && !b`
  Напр. `windows <-> dc2` означава: „ако се ползва компютър под Windows, той трябва да е в центъра за данни № 2, ако обаче се ползва компютър, който не е под Windows, той не трябва да е в центъра за данни № 2“.

### Бележки

- Асоциативността на всички оператори е лява, т. е. `a -> b -> c` означава: `(a -> b) -> c` .
- Етикетите или имената на компютрите може да са заградени в кавички, ако съдържат знаци, които противоречат на синтаксиса на операторите.
  Напр. `"osx (10.11)" || "Windows Server"` .
- Не е задължително да слагате интервали в изразите, но е добре да го правите за четимост. Jenkins прескача празните знаци при изчисляването на изразите.
- Напасване на етикетите или имената на компютрите с шаблони или регулярни изрази не се поддържа.
- Празен израз се изчислява като истина и напасва всички машини.

### Примери

`built-in`
  Изгражданията на този проект може да са само на основния компютър на Jenkins.
`linux-machine-42`
  Проектът може да бъде изграден само на агент с име `linux-machine-42` (или на всяка машина, която има етикет на име `linux-machine-42` ).
`windows && jdk9`
  Изгражданията може да се извършат на всеки подчинен компютър, който е с Windows и има версия 9 на комплекта за разработчици на Java (като приемаме, че всеки компютър с инсталиран JDK 9 има етикета `jdk9` ).
`postgres && !vm && (linux || freebsd)`
  Изгражданията на този проект може да са на всеки агент под Linux или FreeBSD, стига да не са във виртуална машина, и да е инсталирана базата PostgreSQL (като приемаме, че на всяка машина са поставени съответните етикети, напр. всяка виртуална машина е с етикет `vm` , иначе примерът няма да сработи).