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
相关产品推荐
相关产品推荐

