pipeline jenkins: agente vs nodo?


134

Qual è la differenza tra un agente e un nodo in una pipeline jenkins?

Ho trovato queste definizioni:

  • nodo : la maggior parte del lavoro svolto da una pipeline viene eseguita nel contesto di uno o più passaggi del nodo dichiarati.
  • agente : la direttiva agente specifica dove verrà eseguita l'intera pipeline, o una fase specifica, nell'ambiente Jenkins a seconda di dove si trova la direttiva agente.

Quindi entrambi vengono utilizzati per eseguire i passaggi della pipeline. Ma quando usare quale?

Risposte:


145

La semplice risposta è che l' agente è per pipeline dichiarative e il nodo è per pipeline con script .

Nelle pipeline dichiarative la direttiva agent viene utilizzata per specificare su quale agent / slave il lavoro / task deve essere eseguito. Questa direttiva consente solo di specificare dove deve essere eseguita l'attività, quale agente, slave, etichetta o immagine docker.

D'altra parte, nelle pipeline con script il passo del nodo può essere usato per eseguire uno script / passo su uno specifico agente, etichetta, slave. Il passaggio del nodo prende facoltativamente l'agente o il nome dell'etichetta e quindi una chiusura con il codice che deve essere eseguito su quel nodo.

pipeline dichiarative e gestite da script (modifica basata sul commento):

  • pipeline dichiarative è una nuova estensione della DSL della pipeline (è fondamentalmente uno script della pipeline con un solo passaggio, un passaggio della pipeline con argomenti (chiamati direttive), queste direttive dovrebbero seguire una sintassi specifica. Il punto di questo nuovo formato è che è più rigoroso e quindi dovrebbe essere più facile per i nuovi utenti delle pipeline, consentire la modifica grafica e molto altro.
  • pipeline con script è il fallback per requisiti avanzati.

5
Sì e no, le pipeline dichiarative sono una nuova estensione della DSL della pipeline (è fondamentalmente uno script della pipeline con un solo passo, un passo della pipeline con argomenti (chiamati direttive), queste direttive dovrebbero seguire una sintassi specifica. Il punto di questo nuovo formato è che è più rigoroso e che quindi dovrebbe essere più facile per i nuovi utenti delle pipeline, consentire la modifica grafica e molto altro, vedere l'elenco delle funzionalità sul collegamento sopra. Quindi, per semplice attività, direi che è l'approccio consigliato, ma per più avanzato casi, script è il fallback.
Jon S

6
Ora ci sono 3 nomi con node, agente slave!
mkobit,

2
@mkobit Sì, i nomi sono piuttosto confusi, ho letto da qualche parte (non riesco a trovare il riferimento in questo momento, o era sul blog di Jenkins o su Jenkins JIRA), che stanno cercando di rinominare e utilizzare l'agente anziché lo schiavo poiché è non come una parola "negativa". Quindi immagino che le pipeline dichiarative lo abbiano adottato e lo abbiano chiamato agente. Penso che il nodo provenga da condutture gestite da script.
Jon S

1
@DenCowboy Aha, sì, direi che la quarta best practice si applica solo alla pipeline con script poiché il dichiarativo alloca sempre un nodo, la direttiva dell'agente limita solo il nodo assegnato.
Jon S,

1
@DenCowboy No, dovrebbe usare lo stesso, basta usare la direttiva agent per determinare inizialmente quale agent / slave usare.
Jon S,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.