news 2026/6/11 9:22:58

jenkins部署nodejs前端项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jenkins部署nodejs前端项目

一、jenkins安装node插件

Manage Jenkins-->Manage Plugins

在可选插件钟搜索NodeJS,找到NodeJS ,勾选,然后点击Install without restart

安装完插件之后需要web端重启jenkins,地址为http://[ip]/restart,我这里是http://192.168.3.42/restart

二、安装node

以node13为例,node14对安装低版本的node-sass有影响

下载和解压

wget https://nodejs.org/dist/v13.9.0/node-v13.9.0-linux-x64.tar.gz tar zxvf node-v13.9.0-linux-x64.tar.gz -C /usr/local cd /usr/local mv node-v13.9.0-linux-x64 node13

配置环境变量

#编辑/etc/profile vi /etc/profile #在最后添加 #set nodejs env export NODE_HOME=/usr/local/node13 export PATH=$NODE_HOME/bin:$PATH #用source命令是环境变量生效 source /etc/profile

查看版本

node -v npm -v

配置淘宝镜像

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

三、Jenkins配置node

Manage Jenkins-->Global Tool Configuration--> NodeJS 安装
新增NodeJS

别名node-v13
安装目录/usr/local/node13

四、项目配置

Manage Jenkins-->Manage Plugins

搜索Git Parameter安装

以git项目打包为例说明使用

新建item

任务名称 任意,类型选Freestyle project

填写内容分6块,分别是 General 、源码管理、构建触发器、构建环境、构建、构建后操作
General内容

1.勾选Discard old builds 设置 策略Loq Rotation 保持构建的天数=1 保持构建的最大个数=5 2.GitLab Connection 选择 jenkins 3.勾选This project is parameterized 添加参数 Git Parameter(这里用到的就是刚才的 Git Parameter插件) 名称 填 branch 参数类型 选择 分支

源码管理内容

1.选择Git Repositories Repository URL 填git地址如http://git.aaa.com/bbb_projects/ccc.git Credentials 这里添加 你的git账号 可以用gitlab的用户名密码,也可以用之前的全局配置的apitoken Branches to build 指定分支(为空时代表any) 填 $branch 其他选项 默认

构建触发器

不填 这里可以配置一些比如push代码后自动构建的操作等

构建环境

勾选 Provide Node & npm bin/ folder to PATH NodeJS Installation 选择之前配置的node-v13 其余选项默认

构建

增加构建步骤-Execute Shell 脚本如下 PACKAGE_CONFIG=package.json VUETEMPLATECOMPILER=2.6.11 sed -i 's#\("vue-template-compiler": "\).*#\1'"$VUETEMPLATECOMPILER"'",#g' $PACKAGE_CONFIG npm install --unsafe -perm npm run build:dev zip -r dist.zip dist /usr/local/transfer/transfer cow dist.zip >wenshushu.txt linklineNumber=$(sed -n '/Download\ Link/=' wenshushu.txt) echo $linklineNumber linklinestr=$(sed -n "${linklineNumber}p" wenshushu.txt) echo $linklinestr str=${linklinestr#*Link: } mosquitto_pub -h mq.tongxinmao.com -t topic/sunwardtest -m "{\"module\":\"saas-wis-web\",\"link\":\"${str}\"}"

关键构建命令

npm install npm run build:dev zip -r dist.zip dist

若使用push on ssh命令,注意chmod -R 755 dist,tar解压命令不需要

unzip dist.zip chmod -R 755 dist cp dist path/to/nginx/html

大部分linux系统最小化安装是不带zip命令,如果不想安装zip,我们可以用tar命令替换

#tar压缩(这个压缩后带dist文件夹,建议使用) tar czvf dist.tar.gz -C ./ dist #tar解压 tar -zxvf dist.tar.gz

五、其他包管理器处理

怎么判断node项目使用哪个包管理器,最简单的方法,查看package.json

有pnpm的基本为pnpm包管理,有yarn的基本就是yarn包管理,如果都没有就是npm包管理。

包管理器为pnpm时

jenkins上全局安装 pnpm

npm install -g pnpm

打包

pnpm install --ignore-scripts pnpm build

其他过程类似

包管理器位yarn时

jenkins上全局安装yarn

npm install -g yarn

打包

yarn install --pure-lockfile #--pure-lockfile 这个参数是在服务器install不生成yarn.lock,防止服务器和本地代码冲突 yarn run build

其他过程类似

六、多pnpm yarn版本发布

jenkins发布多npm版本时,可以使用nvm相关插件解决,那么pnpm如何解决

答案是使用corepack命令 或者 npx

1.corepack方案

以node18和node16对应的多版本pnpm为例

(1).下载node

下载地址

node18 https://nodejs.org/dist/v18.20.0/node-v18.20.0-linux-x64.tar.gz

node16 https://nodejs.org/download/release/v16.18.1/node-v16.18.1-linux-x64.tar.gz

(2).配置corepack全局环境变量的npm镜像

Jenkins-->Manage Jenkins--Configure System

全局属性-->Environment variables

COREPACK_NPM_REGISTRY=https://registry.npmmirror.com

这个地方配置corepack的npm镜像

(3).配置多个node版本路径

Jenkins-->Manage Jenkins--Global Tool Configuration

配置多个node路径

NodeJS --NodeJS 安装--新增NodeJS

(4).工作项配置

node版本选择

Provide Node & npm bin/ folder to PATH

NodeJS Installation

选择上面配置的别名

shell脚本使用corepack启用pnpm

node -v npm -v npm config ls corepack enable pnpm pnpm -v pnpm install --ignore-scripts pnpm build

2.npx方案

corepack在启用pnpm时会强制外网下载,对内网不友好,虽然可以先把pnpm离线包放进来,还是有点遗憾

以node18为例 可以用npx pnpm@10 替换掉pnpm命令

常见打包命令

npm config set registry http://mirror.example.cn/ # 去掉 --no-install,让 npx 临时下载到当前项目,不污染全局 npx pnpm@10 -v npx pnpm@10 install --ignore-scripts npx pnpm@10 build

七、常见报错

1.node-sass低版本安装不成功

建议安装node版本<=node13,因为低版本node-sass不支持高版本的node

2.node-sass mkdir没有权限

由于node-sass不能用root用户命令运行npm install命令需要加上 --unsafe -perm或者改权限不用root用户执行这个命令

3.Syntax Error: TypeError: Cannot read property 'parseComponent' of undefined

vue的版本与vue-template-compiler不一致导致的

检查package.json里vue 和 vue-template-compiler版本号是否完全一致,不能带有“^” 或者 “~”,如果有去掉,改成数字点号形式。上面的版本都是2.6.11,但是vue-template-compiler前带有“^” ,所以上面的命令用sed命令替换掉了。

4.长时间npm build没有反应

清理工作空间

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 9:22:57

ImageJ2:构建下一代科学图像处理生态系统的架构解析

ImageJ2&#xff1a;构建下一代科学图像处理生态系统的架构解析 【免费下载链接】imagej2 Open scientific N-dimensional image processing :microscope: :sparkler: 项目地址: https://gitcode.com/gh_mirrors/im/imagej2 ImageJ2是面向多维科学图像处理的现代化开源平…

作者头像 李华
网站建设 2026/6/11 9:22:49

MC9S08SH32 IIC总线驱动开发:从协议原理到寄存器实战配置

1. 项目概述&#xff1a;深入MC9S08SH32的IIC总线世界在嵌入式开发中&#xff0c;如何用最少的引脚连接最多的外设&#xff0c;一直是个经典课题。IIC&#xff08;Inter-Integrated Circuit&#xff09;总线&#xff0c;凭借其简洁的两线制&#xff08;SDA数据线和SCL时钟线&am…

作者头像 李华
网站建设 2026/6/11 9:22:41

S12Z内存映射与中断控制:嵌入式系统可靠性的核心机制

1. 项目概述与核心价值 在嵌入式开发&#xff0c;尤其是汽车电子和工业控制这类对可靠性要求近乎苛刻的领域&#xff0c;我们写的每一行代码都直接与物理世界交互。一个微小的内存访问错误&#xff0c;轻则导致传感器数据异常&#xff0c;重则可能引发系统宕机甚至安全事故。因…

作者头像 李华
网站建设 2026/6/11 9:22:30

嵌入式硬件设计基石:MC9S12HZ256电气特性深度解析与工程实践

1. 项目概述&#xff1a;为什么电气特性是嵌入式设计的“生命线”在嵌入式硬件开发领域&#xff0c;尤其是汽车电子和工业控制这类对可靠性要求严苛的场合&#xff0c;我们工程师拿到一颗新的微控制器&#xff08;MCU&#xff09;时&#xff0c;第一件事往往不是去翻看那些炫酷…

作者头像 李华
网站建设 2026/6/11 9:22:30

Python常用模块:passlib、joblib

一、passlib 常用于加密密码。security.py from passlib.context import CryptContext # 创建密码上下文 pwd_context CryptContext(schemes["bcrypt"], deprecated"auto")# 密码加密 def get_hash_password(password: str):return pwd_context.hash(pass…

作者头像 李华