Definierar ett logiskt uttryck som bestämmer vilka agenter som får köra byggen i detta projekt. Detta uttryck, när det testas mot namnet och etiketterna för varje tillgänglig agent, kommer att vara antingen true eller false . Om uttrycket utvärderas som true kommer denna agent tillåtas att köra byggen av detta projekt.

Om detta projekt alltid ska byggas på en specifik agent eller på den inbyggda \ noden behöver du bara ange agentens namn respektive `built-in` .

Du bör dock generellt undvika att använda namnet på en agent här och hellre använda agentens etiketter . Enligt dokumentationen på konfigurationssidan för varje agent och sidan Konfigurera system för huvudnoden kan etiketter användas för att representera vilket operativsystem agenten körs på, dess processorarkitektur eller någon annan egenskap.
Med hjälp av etiketter försvinner behovet att omkonfigurera etikettuttrycket som anges här varje gång du lägger till, tar bort eller byter namn på agenter.

Ett etikettuttryck kan vara så enkelt som att ange en etikett eller ett agentnamn , t.ex. `android-builder` eller `linux-machine-42` .
Du kan också använda olika operatörer för att skapa mer komplexa uttryck.

### Operatörer som stöds

Följande operatorer stöds, i fallande prioritetsordning:

`(uttryck)`
  parenteser — används för att uttryckligen definiera ett uttrycks associativitet
`!uttryck`
  NOT — negation; resultatet av att `uttryck` får inte vara sant
`a && b`
  AND — båda uttrycken `a` och `b` måste vara sanna
`a || b`
  OR — antingen uttrycket `a` eller `b` får vara sant
`a -> b`
  "implicerande" operatör — motsvarar `!a || b` .
  Till exempel kan `windows -> x64` ses som "om en Windows-agent används måste agenten vara 64-bitar" samtidigt som projektet tillåts köras på alla agenter som inte har etiketten `windows` oavsett om de också har etiketten `x64`
`a <-> b`
  operatören "om och endast om" — motsvarar `a && b || !a && !b`
  Till exempel kan `windows <-> dc2` ses som "om en Windows-agent används, så måste agenten finnas i datacenter 2, men om en agent utan Windows används får den inte finnas i datacenter 2"

### Anteckningar

- Alla operatörer är vänsterassociativa, d.v.s. `a -> b -> c` motsvarar `(a -> b) -> c` .
- Etiketter eller agentnamn kan omges med citattecken om de innehåller tecken som skulle hamna i konflikt med operatörsyntaxen.
  T.ex. `"osx (10.11)" || "Windows Server"` .
- Uttryck kan skrivas utan blanksteg, men rekommenderas att användas för läsbarhetens skull; Jenkins ignorerar blanksteg när uttryck utvärderas.
- Matchande etiketter eller agentnamn med jokertecken eller reguljära uttryck stöds inte.
- Ett tomt uttryck kommer alltid att utvärderas till true och matcha alla agenter.

### Exempel

`built-in`
  Byggen av detta projekt får endast köras på den inbyggda noden
`linux-machine-42`
  Byggen av detta projekt får endast köras på agenten med namnet `linux-machine-42` (eller på vilken dator som helst som råkar ha etiketten `linux-machine-42` )
`windows && jdk9`
  Byggen av detta projekt får endast köras på en Windows-agent som har version 9 av Java Development Kit installerat (förutsatt att agenter med JDK 9 har fått etiketten `jdk9` )
`postgres && !vm && (linux || freebsd)`
  Byggen av det här projektet får endast köras på en Linux- eller FreeBSD-agent så länge den inte är en virtuell dator och att den har PostgreSQL installerat (förutsatt att varje agent har lämpliga etiketter – i synnerhet varje agent som körs i en virtuell dator måste ha etiketten `vm` för att detta exempel ska fungera som förväntat)