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

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

Като цяло трябва да избягвате употребата на името на подчинения компютър като вместо това използвате етикетите на компютрите. Както е документирано на страницата за настройки на всеки агент и страницата за Системни настройки на основния компютър, етикетите могат да се използват за определяне на кои операционни системи върви 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 прескача празните знаци при изчисляването на изразите.
- Напасване на етикетите или имената на компютрите с шаблони или регулярни изрази не се поддържа.
- Празен израз се изчислява като истина и напасва всички машини.

### Примери

`master`
  Изгражданията на този проект може да са само на основния компютър на 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`, иначе примерът няма да сработи).