jenkins管道:代理vs节点?

Mat*_*s M 114 jenkins jenkins-pipeline

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

我找到了那些定义:

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

因此两者都用于执行管道步骤.但什么时候使用哪一个?

Jon*_*n S 125

简单的答案是,Agent用于声明性管道,节点用于脚本化管道.

在声明性管道中,agent指令用于指定要在其上执行作业/任务的代理/从属.该指令仅允许您指定任务的执行位置,代理,从属,标签或泊坞窗图像.

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

声明性和脚本化管道(基于注释编辑):

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

  • 现在有3个名称带有`node`,`agent`和`slave`! (6认同)
  • 是的,没有声明性管道是管道DSL的新扩展(它基本上是一个只有一步的管道脚本,带有参数的管道步骤(称为指令),这些指令应遵循特定的语法.这种新格式的要点是它更严格,因此管道新手应该更容易,允许图形编辑等等,请参阅上面链接上的功能列表.所以对于简单的任务我会说它是推荐的方法,但更高级案例,脚本是后备. (5认同)
  • 如果它显示了在远程代理上执行阶段或节点的示例,那么这个答案会更好。我仍在尝试找到实际使用带有远程代理的脚本化管道的语法。官方文档没有提供答案(像往常一样)。 (3认同)
  • @mkobit是的,名字很混乱,我在某处读到(现在找不到引用,无论是在Jenkins博客上还是在Jenkins JIRA上),他们试图重命名并使用代理而不是奴隶,因为它是不是一个"消极"的词.然后我猜是采用了声明性管道并称之为代理.我认为,节点源于脚本化管道. (2认同)
  • “代理用于声明式管道,节点用于脚本化”...这似乎不正确。使用语法 `agent { node { label "abc" } }` 的声明式 Jenkinsfile 怎么样?显然节点也用于声明性。那么到底有什么区别呢? (2认同)