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

Jenkins Pipeline中setNodeVersion函数传参与工具调用语法修正

问题解决:Jenkins Pipeline设置Node版本函数的语法错误

错误原因

你的代码里,env.NODE_HOME = "${tool 'Node-\"${nodeVersion}\"'}"这一行的嵌套引号写法错误,导致Groovy没有正确解析${nodeVersion}变量,反而把Node-"${nodeVersion}"作为字面量传递给tool步骤,Jenkins找不到这个名称的工具,所以报错。

正确写法

你需要调整字符串插值的方式,让nodeVersion变量被正确解析,以下是两种可行的写法:

写法一:双引号直接插值

def setNodeVersion(final String nodeVersion="11.15.0") {
  env.NODE_HOME = tool "Node-${nodeVersion}"
  env.PATH = "${env.NODE_HOME}/bin:${env.PATH}"
  sh """
    node -v
    npm -v
  """
}

setNodeVersion("12.22.1")

写法二:单引号拼接字符串

如果习惯用单引号,也可以通过字符串拼接实现:

def setNodeVersion(final String nodeVersion="11.15.0") {
  env.NODE_HOME = tool 'Node-' + nodeVersion
  env.PATH = "${env.NODE_HOME}/bin:${env.PATH}"
  sh """
    node -v
    npm -v
  """
}

setNodeVersion("12.22.1")

说明

  • tool步骤接收的是工具名称字符串,只要确保传递的是Node-12.22.1这类正确的工具名即可(工具名要和Jenkins全局工具配置里的Node版本名称一致)。
  • 调整后,nodeVersion参数会被正确替换成传入的版本号,tool就能找到对应的Node安装路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:30:02