在现代软件开发中,Jenkins 是一个广泛使用的持续集成和持续交付(CI/CD)工具。而 Node.js 和 npm 则是前端开发和构建工具链中不可或缺的一部分。为了让 Jenkins 能够正确运行基于 Node.js 的项目,我们需要确保 Jenkins 能够访问正确的 Node.js 和 npm 环境。本文将详细介绍如何在 CentOS 7 上为 Jenkins 配置 Node.js 和 npm,并解决常见的配置问题。
在 Jenkins 中运行基于 Node.js 的项目时,可能会遇到以下问题:
npm: command not found:Jenkins 无法找到 npm 命令。这些问题通常是由于 Jenkins 运行时使用的用户(通常是 jenkins)没有正确配置 Node.js 和 npm 的环境变量导致的。本文将逐步解决这些问题,确保 Jenkins 能够正确运行基于 Node.js 的项目。
NVM(Node Version Manager)是一个灵活的 Node.js 版本管理工具,适合需要切换多个 Node.js 版本的用户。
切换到 jenkins 用户:
sudo su - jenkins安装 NVM:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash使 NVM 生效:
source ~/.bashrc验证 NVM 是否安装成功:
nvm --version使用 NVM 安装 Node.js v16.20.2:
nvm install 16.20.2验证安装:
node -v
npm -v设置默认 Node.js 版本:
nvm alias default 16.20.2如果不想使用 NVM,可以将 Node.js 安装到全局路径,使所有用户都可以访问。
下载 Node.js 二进制包:
wget https://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.xz解压文件:
tar -xvf node-v16.20.2-linux-x64.tar.xz将解压后的目录移动到 /opt:
sudo mv node-v16.20.2-linux-x64 /opt/nodejs创建软链接:
sudo ln -sf /opt/nodejs/bin/node /usr/local/bin/node
sudo ln -sf /opt/nodejs/bin/npm /usr/local/bin/npm验证安装:
node -v
npm -vsystemd 服务文件Jenkins 是通过 systemd 管理的,因此我们可以通过修改其服务文件来设置环境变量。
编辑 Jenkins 的 systemd 服务文件:
sudo vim /usr/lib/systemd/system/jenkins.service在 [Service] 部分添加以下内容:
Environment="NVM_DIR=/var/lib/jenkins/.nvm"
Environment="PATH=/var/lib/jenkins/.nvm/versions/node/v16.20.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"保存并退出。
重新加载 systemd 配置并重启 Jenkins:
sudo systemctl daemon-reload
sudo systemctl restart jenkins如果无法修改 Jenkins 的启动脚本,可以在 Jenkins Pipeline 中显式设置环境变量。
在你的 Jenkins Pipeline 脚本中,添加以下内容:
pipeline {
agent any
environment {
PATH = "/var/lib/jenkins/.nvm/versions/node/v16.20.2/bin:${env.PATH}"
}
stages {
stage('Build') {
steps {
sh '''
node -v
npm -v
npm config set registry http://registry.npm.taobao.org
npm install
npm run build
'''
}
}
}
}Jenkins 的 NodeJS 插件 可以更方便地管理 Node.js 环境。
NodeJS 16.20.2)。Install automatically(自动安装),或者选择你已安装的版本。NodeJS 16.20.2)。npm: command not found如果 Jenkins 任务中仍然报错 npm: command not found,可以尝试以下方法:
确保 jenkins 用户可以访问 Node.js 和 npm:
sudo chown -R jenkins:jenkins /var/lib/jenkins/.nvm
sudo chmod -R 755 /var/lib/jenkins/.nvm在 Jenkins Pipeline 中显式设置环境变量:
environment {
PATH = "/var/lib/jenkins/.nvm/versions/node/v16.20.2/bin:${env.PATH}"
}如果项目需要特定版本的 Node.js,可以使用 NVM 安装并切换版本:
安装指定版本的 Node.js:
nvm install 14切换版本:
nvm use 14设置默认版本:
nvm alias default 14通过本文的步骤,你可以成功在 CentOS 7 上为 Jenkins 配置 Node.js 和 npm,并解决常见的配置问题。无论是通过修改 systemd 服务文件、在 Jenkins Pipeline 中显式设置环境变量,还是使用 Jenkins 的 NodeJS 插件,都可以确保 Jenkins 能够正确运行基于 Node.js 的项目。
希望本文对你有所帮助!如果有其他问题,欢迎随时讨论。