Definisce un'espressione logica che determina quali agenti possano eseguire compilazioni di questo progetto. Quest'espressione, se testata sul nome e sulle etichette di ogni agente disponibile, sarà vera o falsa. Se l'espressione viene valutata come vera, allora a tale agente sarà consentito eseguire compilazioni di questo progetto.

Se questo progetto deve essere sempre compilato su un agente specifico, o sul master Jenkins, è possibile rispettivamente immettere il nome dell'agente, o master.

Ciò nonostante, in generale si dovrebbe evitare di utilizzare il nome di un agente in questo campo e si dovrebbero preferibilmente specificare le etichette di un agente. Come documentato nella pagina di configurazione di ogni agente e nella pagina Configura sistema del master, le etichette possono essere utilizzate per rappresentare il sistema operativo su cui è in esecuzione l'agente, la sua architettura della CPU, o altre caratteristiche.
L'utilizzo delle etichette elimina la necessità di riconfigurare l'espressione per le etichette immessa in questo campo ogni volta che si aggiungono, rimuovono o rinominano agenti.

Un'espressione etichetta può essere semplice, come una singola etichetta o un nome agente, ad esempio android-builder, o linux-machine-42.
È anche possibile utilizzare vari operatori per creare espressioni più complesse.

Operatori supportati

Sono supportati i seguenti operatori in ordine di priorità decrescente:
(espressione)
parentesi — utilizzate per definire esplicitamente l'associatività di un'espressione
!espressione
NOT — negazione; il risultato di espressione non deve essere vero
a && b
AND — entrambe le espressioni a e b devono essere vere
a || b
OR — una delle espressioni a o b può essere vera
a -> b
operatore "implica" — equivalente a !a || b.
Ad esempio, si può pensare a windows -> x64 come a "se viene utilizzato un agente Windows, allora quell'agente deve essere a 64 bit", consentendo comunque a questo progetto di essere eseguito su un qualunque agente senza l'etichetta windows, indipendentemente dal fatto che abbiano anche un'etichetta x64
a <-> b
operatore "se e solo se" — equivalente a a && b || !a && !b
Ad esempio, si può pensare a windows <-> dc2 come a "se viene utilizzato un agente Windows, allora quell'agente deve essere nel datacenter 2, ma se non viene utilizzato un agente Windows allora non deve essere nel datacenter 2"

Note

Esempi

master
Le compilazioni di questo progetto possono essere eseguite solo sul master Jenkins
linux-machine-42
Le compilazioni di questo progetto possono essere eseguite solo sull'agente con nome linux-machine-42 (o su una qualsiasi macchina che abbia l'etichetta linux-machine-42)
windows && jdk9
Le compilazioni di questo progetto possono essere eseguite solo su un agente Windows che abbia installato il Java Development Kit, versione 9 (assumendo che agli agenti che abbiano il JDK 9 installato sia stata assegnata l'etichetta jdk9)
postgres && !vm && (linux || freebsd)
Le compilazioni di questo progetto possono essere eseguite solo su un agente Linux o FreeBSD, a condizione che non siano una macchina virtuale e che abbiano PostgreSQL installato (assumendo che ogni agente abbia le etichette appropriate — in particolare, ogni agente eseguito in una macchina virtuale deve avere l'etichetta vm per far sì che quest'esempio funzioni come previsto)