【问题标题】:Jenkins pipeline: agent vs node?詹金斯管道:代理与节点?
【发布时间】:2017-06-22 09:10:00
【问题描述】:

jenkins 管道中的 agentnode 有什么区别?

我找到了这些定义:

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

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

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    简单的答案是,Agent 适用于 declarative 管道,node 适用于 scripted 管道。

    在声明式管道中,agent 指令用于指定要在哪个代理/从属设备上执行作业/任务。该指令只允许你指定任务将在哪里执行,代理、从属、标签或 docker 映像。

    另一方面,在脚本化管道中,node 步骤可用于在特定代理、标签、从属设备上执行脚本/步骤。 node 步骤可选地采用代理或标签名称,然后是带有要在该节点上执行的代码的闭包。

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

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

    【讨论】:

    • Yes and no 声明式管道是管道 DSL 的新扩展(它基本上是一个只有一步的管道脚本,一个带有参数的管道步骤(称为指令),这些指令应该遵循特定的语法.这种新格式的要点是它更严格,因此对于管道新手来说应该更容易,允许图形编辑等等,请参阅上面链接上的功能列表。所以对于简单的任务,我会说它是推荐的方法,但对于更高级的情况,脚本化是后备。
    • 现在有nodeagentslave三个名字!
    • @mkobit 是的,名字很混乱,我在某个地方读到过(现在找不到参考,无论是在 Jenkins 博客上还是在 Jenkins JIRA 上),他们正试图重命名并使用代理而不是奴隶,因为它不是“否定”词。然后我猜声明式管道采用了它并将其称为代理。我认为,节点源自脚本化管道。
    • @DenCowboy 啊哈,是的,我想说那里的第四个最佳实践只适用于脚本化管道,因为声明性总是分配一个节点,代理指令只限制分配哪个节点。
    • @DenCowboy 不应该使用相同的,它只是使用代理指令来初步确定要使用的代理/从站。
    猜你喜欢
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2019-01-09
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多