使用Jenkins部署nodejs前端项目

1. 安装node环境

1.1 下载

https://nodejs.org/zh-cn/download

在这里插入图片描述

1.2 解压到安装目录

tar -xJvf node-v22.15.1-linux-x64.tar.xz
mv node-v22.15.1-linux-x64 /home/soft/
mv node-v22.15.1-linux-x64/ node22

原本计划安装 node22和node18,但是CentOS7.9 GLIBCXX 版本过低,升级这个代价挺大的,可能导致系统奔溃,看来CentOS7.9已经退出历史的舞台了。

node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)

最后将node版本降至16

tar -xJvf node-v16.20.2-linux-x64.tar.xz
mv node-v16.20.2-linux-x64 /home/soft/
cd /home/soft/
mv node-v16.20.2-linux-x64/ node16

将node版本降至16后,项目打包失败了,最后没办法重新装了操作系统为Rocky Linux 8.10 ,安装node 18成功了。

但是运行 npm -v 的时候报错 Error: Cannot find module '../lib/cli.js',在DeepSeek的帮助下找到了解决办法

cat /home/soft/node18/bin/npm

#输出结果为
#!/usr/bin/env node
require('../lib/cli.js')(process)

手动修正 npm 脚本路径

# 编辑 npm 脚本
vim /home/soft/node18/bin/npm

# 将路径改为绝对路径(根据实际位置)
#!/usr/bin/env node
require('/home/soft/node18/lib/node_modules/npm/lib/cli.js')(process)

1.3 配置环境变量

vim /etc/profile
export NODE_HOME=/home/soft/node16
$PATH:$NODE_HOME/bin

在这里插入图片描述
重载配置文件

source  /etc/profile

重新打开终端,然后查看安装是否成功

node -v
npm -v

在这里插入图片描述

1.4 配置国内镜像

npm config set registry https://registry.npmmirror.com
npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass

2. Jenkins 安装 NodeJS 插件

2.1 插件安装

NodeJS

在这里插入图片描述

2.2 重启Jenkins

浏览器访问 http://ip:8080/restart
在这里插入图片描述

3. Jenkins 配置 node

在这里插入图片描述

4. 项目配置

4.1 新建Item

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 服务器部署路径
REMOTE_DIR="/home/app/commuter/commuter-dev/ui" 

echo "📦 安装 npm 依赖..."
npm install --registry=https://registry.npmmirror.com
echo "🔨 开始构建项目..."
npm run build
if [ ! -d "./dist" ]; then
  echo "❌ 构建失败:未找到编译后dist目录"
  exit 1
fi
zip -r dist.zip dist
echo "📦 安装 npm 依赖..."
cd $REMOTE_DIR
rm -rf dist*
echo "移动dist文件..."
mv -v ${WORKSPACE}/dist.zip $REMOTE_DIR || { echo "移动dist文件失败"; exit 1; }
ls -l 
echo "解压dist文件..."
unzip dist.zip
echo "🎉 部署完成!"



4. 出现的问题

  1. 一般windows系统不区分大小写,但是Linux系统区分,有时候前端代码路径如果没有区分大小写可能导致项目build失败。
<think>嗯,用户想了解如何使用Jenkins部署前端项目。首先,我需要回忆一下Jenkins的基本操作和持续集成的流程。记得Jenkins需要安装插件,比如Git插件和NodeJS插件,这样才能够拉取代码和执行npm命令。另外,用户可能需要配置Webhook,这样代码提交后自动触发构建。 然后,前端项目通常使用npm或者yarn进行依赖安装和构建,所以需要在Jenkins的构建步骤中添加相应的命令,比如npm install和npm run build。构建后的静态文件需要部署到服务器,可能需要用到Publish Over SSH插件,或者直接上传到CDN。 还要考虑环境变量的配置,比如生产环境和测试环境的不同配置。可能需要使用Jenkins的凭证管理来存储敏感信息,比如API密钥或者服务器登录凭证。此外,如果项目使用Docker,可能还需要集成Docker构建步骤,生成镜像并推送到仓库,再部署到服务器。 用户提供的引用里有提到Docker和持续集成的配置,比如引用[1]和[3]提到了Jenkins和Docker的使用,所以可能需要结合这些内容。例如,使用Docker容器作为构建环境,确保环境一致性。引用[4]是关于Docker学习资源的整理,可能可以建议用户参考这些资源来配置Docker环境。 还需要注意Jenkinsfile的编写,使用Pipeline来定义整个构建、测试、部署流程,这样更灵活。可能用户对Pipeline不太熟悉,需要给出一个简单的示例,比如声明式Pipeline的脚本结构。 另外,部署后的步骤,比如自动化测试、通知反馈等,也是需要考虑的。例如,在构建成功后发送邮件或者Slack通知。可能用户需要这些步骤,但问题中没提到,可以适当提及作为扩展。 最后,确保回答结构清晰,分步骤说明,并引用相关的参考资料,比如提到的持续集成配置和Docker相关的内容。还要生成相关问题,帮助用户深入理解,比如优化构建速度、多环境部署等。</think>### 如何使用 Jenkins 部署前端项目 #### 1. **环境准备** - **安装 Jenkins**:通过 Docker 或本地安装 Jenkins 服务。例如,使用 Docker 镜像快速启动: ```bash $ docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts ``` 引用[^3]中提到的镜像可作为扩展参考。 - **安装必要插件**: - *Git Plugin*:用于拉取代码仓库。 - *NodeJS Plugin*:管理 Node.js 环境(前端项目通常依赖 npm/yarn)。 - *Publish Over SSH*(可选):用于将构建产物部署到远程服务器。 #### 2. **配置项目** - **新建任务**:选择“自由风格项目”或“Pipeline”。 - **源码管理**:配置 Git 仓库地址和凭证,例如: ``` Repository URL: https://github.com/your-project.git Credentials: 添加 GitHub 账户的 SSH 密钥或用户名/密码 ``` - **构建触发器**:设置 Webhook 或轮询 SCM,实现代码提交后自动触发构建[^1]。 #### 3. **构建步骤** - **安装依赖**:在“构建环境”中勾选“Provide Node & npm”,选择 Node.js 版本,并在构建步骤中添加命令: ```bash npm install npm run build # 根据项目实际构建命令调整 ``` - **产物归档**:将生成的静态文件(如 `dist/` 目录)存档或通过 SSH 发送到服务器: ```bash tar -czvf output.tar.gz dist/ ``` #### 4. **部署到服务器** - **使用 SSH 插件**:在“后构建操作”中配置远程服务器信息,将 `output.tar.gz` 传输到目标路径并解压。 - **示例脚本**: ```bash scp -r dist/ user@server:/var/www/html/ ``` #### 5. **通知与日志** - **集成邮件/Slack**:通过 Jenkins 插件配置构建成功/失败通知。 - **查看控制台输出**:调试构建过程中的错误。 --- ### 示例 Jenkins Pipeline 脚本 ```groovy pipeline { agent any stages { stage('Checkout') { steps { git url: 'https://github.com/your-project.git', branch: 'main' } } stage('Build') { steps { sh 'npm install' sh 'npm run build' } } stage('Deploy') { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: 'production-server', transfers: [ sshTransfer( sourceFiles: 'dist/**', remoteDirectory: '/var/www/html' ) ] ) ] ) } } } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值