Definisce un'espressione logica che determina quali agenti possano eseguire le compilazioni di questo progetto. Quest'espression, se testata con il nome e le etichette di ogni agente disponibile, sarà valutata come true o false. Se l'espressione viene valutata come true, allora a tale agente sarà consentito eseguire le compilazioni di questo progetto.

Se questo progetto dovrebbe essere sempre compilato su un agente specifico, o sul nodo master Jenkins, allora si dovrebbe immettere semplicemente, rispettivamente, il nome dell'agente o master.

Ciò nonostante, si dovrebbe generalmente evitare di usare il nome di un agente in questo campo, preferendo le etichette di un agente. Come documentato sulla pagina di configurazione di ogni agente e sulla pagina Configura sistema del nodo master, è possibile utilizzare etichette per rappresentare il sistema operativo su cui è in esecuzione l'agente, la sua architettura CPU o un qualunque numero di altre caratteristiche.
L'utilizzo delle etichette fa venir meno la necessità di riconfigurare l'espressione etichetta immessa in questo campo ogni volta che si aggiungono, rimuovono o ridenominano agenti.

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

Operatori supportati

Sono supportati i seguenti operatori in ordine di precedenza decrescente:
(espressione)
parentesi — utilizzate per definire esplicitamente l'associatività di un'espressione
!espressione
NOT — negazione; il risultato di espressione non dev'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 ad !a || b.
Ad esempio, windows -> x64 può essere interpretato come "se viene utilizzato un agente Windows, allora tale agente deve essere a 64 bit", consentendo comunque l'esecuzione su qualunque agente che non abbia l'etichetta windows, a prescindere dal fatto che abbia l'etichetta x64
a <-> b
operatore "se e solo se" — equivalente a a && b || !a && !b
Ad esempio, windows <-> dc2 può essere interpretato come "se viene utilizzato un agente Windows, allora tale agente deve essere nel datacenter 2, ma se viene utilizzato un agente non Windows, allora non deve essere nel datacenter 2"

Note

Esempi

master
Le compilazioni di questo progetto possono eseguite solo sul nodo master di Jenkins
linux-machine-42
Le compilazioni di questo progetto possono essere eseguite solo sull'agente denominato linux-machine-42 (o su qualunque sistema che abbia un'etichetta denominata linux-machine-42)
windows && jdk9
Le compilazioni di questo progetto possono essere eseguite solo su un qualunque agente Windows che abbia installata la versione 9 del Java Development Kit (assumendo che agli agenti su cui sia installato JDK 9 sia stata assegnata l'etichetta jdk9)
postgres && !vm && (linux || freebsd)
Le compilazioni di questo progetto possono essere eseguite solo su qualunque agente Linux o FreeBSD fintantoché non siano una macchina virtuale e abbiano PostgreSQL installato (assumendo che ogni agente abbia le etichette appropriate — in particolare, ogni agente in esecuzione in una macchina virtuale deve avere l'etichetta vm affinché quest'esempio funzioni come atteso)