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

如何创建Jenkins Pipeline全局使用项目.nvmrc定义的Node版本?

如何让Jenkins Pipeline所有阶段使用项目.nvmrc定义的Node版本?

问题分析

你尝试通过读取.nvmrc文件动态设置Pipeline的Node版本,但直接在全局tools块中使用后续阶段赋值的变量时出现错误:

ERROR: No jenkins.plugins.nodejs.tools.NodeJSInstallation named null found

这是因为**tools块在Pipeline启动初期就会执行**,此时nodeVersion变量还未被赋值(它是在第一个stage的步骤中才读取.nvmrc得到的),所以传入了null导致匹配失败。

解决方案

方案一:使用withNodeJS动态加载对应版本(依赖Jenkins NodeJS插件)

通过在每个需要Node环境的阶段中,读取.nvmrc后调用withNodeJS步骤加载对应版本,需确保Jenkins全局工具配置中存在与.nvmrc版本完全匹配的NodeJS安装项(名称要一致)。

示例脚本:

pipeline 
{
    agent {
        label 'test'
    }
    stages {
        stage('依赖安装') {
            steps {
                script {
                    // 读取.nvmrc并去除多余换行符
                    def nodeVersion = readFile('.nvmrc').trim()
                    withNodeJS(nodeJSInstallationName: nodeVersion) {
                        sh 'node -v'
                        sh 'npm install'
                    }
                }
            }
        }
        stage('项目构建') {
            steps {
                script {
                    def nodeVersion = readFile('.nvmrc').trim()
                    withNodeJS(nodeJSInstallationName: nodeVersion) {
                        sh 'node -v'
                        sh 'npm run build'
                    }
                }
            }
        }
    }
}

方案二:直接用nvm在Shell中切换版本(无需Jenkins全局配置)

由于Pipeline的Shell是非交互式环境,.bashrc不会自动加载,需要手动加载nvm并切换到.nvmrc定义的版本,前提是构建机器已安装nvm和对应Node版本。

示例脚本:

pipeline 
{
    agent {
        label 'test'
    }
    environment {
        // 提前定义nvm加载路径,根据实际安装位置调整
        NVM_PATH = "${HOME}/.nvm/nvm.sh"
    }
    stages {
        stage('读取Node版本') {
            steps {
                script {
                    env.NODE_VERSION = readFile('.nvmrc').trim()
                }
            }
        }
        stage('依赖安装') {
            steps {
                sh """
                    source ${NVM_PATH}
                    nvm use ${NODE_VERSION}
                    node -v
                    npm install
                """
            }
        }
        stage('项目构建') {
            steps {
                sh """
                    source ${NVM_PATH}
                    nvm use ${NODE_VERSION}
                    npm run build
                """
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:10:16