jenkins管道:代理vs节点?


133

jenkins管道中的代理节点之间有什么区别?

我发现了这些定义:

  • node:管道执行的大多数工作是在一个或多个声明的节点步骤的上下文中完成的。
  • agent:agent指令指定整个管道或特定阶段在Jenkins环境中执行的位置,具体取决于agent指令的放置位置。

因此,两者都用于执行管道步骤。但是什么时候使用哪个呢?

Answers:


144

简单的答案是,代理用于声明式管道,节点用于脚本式管道。

在声明性管道中,agent指令用于指定要在其上执行作业/任务的代理/从属。该指令仅允许您指定要在何处执行任务,哪个代理,从属,标签或docker映像。

另一方面,在脚本化管道中,节点步骤可用于在特定代理,标签,从属上执行脚本/步骤。所述节点步骤任选地取剂或标记名称,然后用一个代码闭合待该节点上执行。

声明性和脚本化管道(根据评论进行编辑):

  • 声明性管道是管道DSL的新扩展(基本上是只有一步的管道脚本,带有参数的管道步骤(称为指令),这些指令应遵循特定的语法。这种新格式的要点是更严格,因此对于管道新手来说应该更容易,允许图形编辑等等。
  • 脚本化管道是高级需求的后备。

5
是的,没有声明性管道是管道DSL的新扩展(基本上是只有一步的管道脚本,带有参数的管道步骤(称为指令),这些指令应遵循特定的语法。这种新格式的要点是它更加严格,因此对于那些不熟悉管道的人来说应该更容易些,允许进行图形编辑等等,请参见上面链接的功能列表。对于简单的任务,我会说这是推荐的方法,但是对于更高级的方法的情况下,脚本是后备。
乔恩小号

6
现在有3个名称node,分别是agent,和slave
mkobit

2
@mkobit是的,名称非常混乱,我在某处阅读(现在在Jenkins博客或Jenkins JIRA上找不到参考),他们正在尝试重命名并使用代理而不是从属,因为而不是“否定”一词。然后,我猜想声明性管道采用了这种方式并将其称为代理。我认为,节点源自脚本化管道。
乔恩·S

1
@DenCowboy Aha,是的,我要说的第四个最佳实践仅适用于脚本化管道,因为声明式总是分配一个节点,agent指令仅限制分配哪个节点。
乔恩·S

1
@DenCowboy不,它应该使用相同的名称,它只是使用agent指令来最初确定要使用哪个agent / slave。
乔恩·S
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.