You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins内联脚本执行位置及两类Shell命令行为差异问询

Jenkins 流水线脚本执行位置详解

首先明确核心规则:

  • Jenkins 流水线中的纯Groovy代码逻辑(比如变量定义、条件判断、循环)始终在控制器(Master)上执行,无论是否指定代理节点。
  • 所有通过sh/bat/powershell等步骤调用的命令或脚本,不管是内联命令还是外部脚本文件,都会在你指定的代理节点(Agent)上执行——前提是流水线已经通过agent块指定了代理。

针对你提到的两个例子:

  • sh "curl some-url.com":内联的curl命令会直接在当前代理节点上运行,网络请求从代理节点的网络环境发起。
  • sh "./script-which-calls-curl.sh":该命令会调用代理节点工作目录下的脚本文件(需确保脚本已存在于代理节点,比如通过Git拉取或文件拷贝步骤上传),脚本内的curl请求同样在代理节点执行,网络请求源也是代理节点。

这两个例子的行为完全一致,都能实现把网络调用委托给代理节点的需求,不会占用控制器的网络资源。

补充注意点:

  • 如果流水线未指定agent(默认在控制器上执行),sh步骤会在控制器上运行,但这种做法不推荐——控制器应仅负责调度管理,避免承担业务执行负载。
  • 代理节点执行的脚本/命令,其输出、返回值会被同步回控制器,供后续Groovy逻辑处理。

内容的提问来源于stack exchange,提问作者Donovan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:03:20