使用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" ]; thenecho "❌ 构建失败:未找到编译后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失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/305.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Power Integrations 汽车电源管理方案:为汽车应用增加系统价值

在新能源汽车产业蓬勃发展的当下,高效的电源管理方案成为提升汽车性能与可靠性的关键。近期,Power Integrations 举办线上交流会,介绍了基于其 1700V InnoSwitch3-AQ 反激式开关 IC 的五款全新参考设计,旨在为 800V 纯电动汽车提供…

前端mjs和js文件区别,mjs和cjs区别---.es.js和.mjs的区别

https://www.cnblogs.com/jocongmin/p/18432236 同一份配置如下,一般打包出来的结果时是一样的,只不过扩展名不一样 export default defineConfig({build: {rollupOptions: {output: [// 同一份配置,仅扩展名不同{ format: es, entryFileNames: [name].mjs },{ fo…

一文掌握vue3基础,适合自学入门案例丰富

Vue3 本文从Vue3的基础语法出发,全面系统的介绍了Vue3的核心概念与应用,旨在帮助自学者更轻松地掌握Vue3。文章内容由浅入深,从通过CDN引入Vue3开始,逐步介绍了组合式API、模块化开发、以及常见的Vue3指令和功能并从单个html的使…

如何自学FPGA设计?

众所周知,FPGA设计自学难度不小,更不存在速成的捷径。这里简单说一下学习的规划,希望能给入门者提供一些方向。 学会相应的知识 不论是科班毕业还是理工科专业出身,想要入行FPGA开发,基础知识必须扎实。尤其是在高校…

Python爬虫(30)Python爬虫高阶:Selenium+Scrapy+Playwright融合架构,攻克动态页面与高反爬场景

目录 一、背景:动态页面与反爬技术的崛起二、技术融合架构设计1. 核心组件分工2. 架构图示3. 关键技术点 三、代码实现:分步详解1. 环境配置2. 核心代码结构3. Scrapy项目集成4. Playwright增强功能示例 四、总结:技术融合的优势与挑战1. 优势…

STM32之定时器

一、内核嘀嗒定时器的原理与应用 基本概念 定时器是STM32中常用的外设,一般定时器的基本功能就是定时,而在Cortex M3/M4内核中也包含一个简单的定时器,就是系统嘀嗒定时器(Systick),它是属于CM4内核的一个外设,内嵌在…

使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程

使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程 在开发 Android 应用程序时,我们通常可以选择使用 Java 或 Kotlin 作为主要的编程语言。然而,有些开发者可能会想要在同一个项目中同时使用这两种语言,这就是所谓的混合编…

云原生安全:错误策略S3存储桶ACL设置为Everyone:FullControl

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 ——从基础到实践的深度解析 1. 基础概念 S3存储桶与ACL Amazon S3(Simple Storage Service)是AWS提供的对象存储服务,支持存储和检索任意规模的数据。ACL(访问控制列表…

20. 自动化测试框架开发之Excel配置文件的IO开发

20.自动化测试框架开发之Excel配置文件的IO开发 一、核心架构解析 1.1 类继承体系 class File: # 文件基类# 基础文件验证和路径管理class ExcelReader(File): # Excel读取器# 实现Excel数据解析逻辑1.2 版本依赖说明 # 必须安装1.2.0版本(支持xlsx格式&#…

嵌入式学习的第二十三天-数据结构-树+哈希表+内核链表

一、树(一对多) 1.树的定义 树:n(n>0)个结点的有限集合。n 0 ,空树。 2.在任意一个非空树中, (1),有且仅有一个特定的根结点 (2),当n>1 时,其余结点可分为m个…

【C++】map和multimap的常用接口详解

map和multimap的文档&#xff1a;<map> - C Reference 1.map类的介绍 map 有两个模板参数&#xff0c;是 key/value的场景。 这里的Key就是key&#xff0c;T就是value&#xff0c;命名不同而已。map默认要求Key⽀持⼩于⽐较&#xff08;升序&#xff09;&#xff0c;如…

sqli-labs第九关—‘时间盲注

一&#xff1a;判断闭合类型 先按照之前的判断方式判断&#xff0c;发现无论输入什么都显示You are in.......... 可以考虑使用时间盲注&#xff1a; 二&#xff1a;时间盲注Time-based Blind&#xff1a; 1.解释&#xff1a; 通过时间延迟判断结果 2.核心原理&#xff1a…