pipeline jenkins: agent vs nœud?

134

Quelle est la différence entre un agent et un nœud dans un pipeline Jenkins?

J'ai trouvé ces définitions:

  • nœud : la plupart des travaux effectués par un pipeline sont effectués dans le contexte d'une ou plusieurs étapes de nœud déclarées.
  • agent : la directive agent spécifie où tout le pipeline, ou une étape spécifique, s'exécutera dans l'environnement Jenkins en fonction de l'emplacement de la directive agent.

Les deux sont donc utilisés pour exécuter les étapes du pipeline. Mais quand utiliser lequel?

Matthias M
la source

Réponses:

145

La réponse simple est que l' agent est destiné aux pipelines déclaratifs et le nœud est aux pipelines scriptés .

Dans les pipelines déclaratifs, la directive agent est utilisée pour spécifier sur quel agent / esclave le travail / la tâche doit être exécuté. Cette directive vous permet uniquement de spécifier où la tâche doit être exécutée, quel agent, esclave, étiquette ou image docker.

D'autre part, dans les pipelines scriptés, l' étape de nœud peut être utilisée pour exécuter un script / une étape sur un agent, une étiquette, un esclave spécifique. L' étape de nœud prend éventuellement le nom de l'agent ou de l'étiquette, puis une fermeture avec le code qui doit être exécuté sur ce nœud.

pipelines déclaratifs et scriptés (modifier en fonction du commentaire):

  • déclarative pipelines est une nouvelle extension du pipeline DSL (il s'agit essentiellement d'un script pipeline avec une seule étape, une étape de pipeline avec des arguments (appelés directives), ces directives devraient suivre une syntaxe spécifique. L'intérêt de ce nouveau format est qu'il est plus strict et devrait donc être plus facile pour les nouveaux pipelines, permettre l'édition graphique et bien plus encore.
  • les pipelines scriptés sont la solution de secours pour les exigences avancées.
Jon S
la source
5
Yes and no déclarative pipelines est une nouvelle extension du pipeline DSL (il s'agit essentiellement d'un script pipeline avec une seule étape, une étape de pipeline avec des arguments (appelés directives), ces directives doivent suivre une syntaxe spécifique. L'intérêt de ce nouveau format est qu'il est plus strict et que cela devrait être plus facile pour les nouveaux pipelines, permettre l'édition graphique et bien plus encore, voir la liste des fonctionnalités sur votre lien ci-dessus. Donc, pour une tâche simple, je dirais que c'est l'approche recommandée, mais pour plus avancée cas, scénarisé est le fallback.
Jon S
6
Maintenant , il y a 3 noms avec node, agentet slave!
mkobit
2
@mkobit Oui, les noms sont assez déroutants, j'ai lu quelque part (je ne trouve pas la référence pour le moment, que ce soit sur le blog Jenkins ou sur Jenkins JIRA), qu'ils essaient de renommer et d'utiliser l'agent au lieu de l'esclave car c'est pas comme un mot «négatif». Ensuite, je suppose que les pipelines déclaratifs l'ont adopté et l'ont appelé agent. Je pense que le nœud provient de pipelines scriptés.
Jon S
1
@DenCowboy Aha, oui, je dirais que la 4ème meilleure pratique ne s'applique qu'aux pipelines scriptés puisque déclarative alloue toujours un nœud, la directive d'agent ne restreint que le nœud alloué.
Jon S
1
@DenCowboy Non, il devrait utiliser la même chose, il utilise simplement la directive agent pour déterminer initialement quel agent / esclave utiliser.
Jon S