jenkins配置+vue打包多环境切换
jenkins配置流水线过程
1.新建item



加入相关的参数就行了。
流水线脚本设置

后端脚本
node {stage 'checkout'sh"""#每次打包清空工作空间目录rm -rf $workspace/*cd $workspace#到工作空间下从远端svn服务端拉取代码svn co svn://10.1.19.21/repo/技术中台/低代码开发平台/projects/iiot-eqp-app/iiot-eqp-app --username "lipeigen" --password "DG-svn-123456""""stage 'Maven Build'sh"""cd $workspace/$app_name#编译后台包,生成jar包#/app/maven3.6/bin/mvn -e -U clean install -Dmaven.test.skip=true -P test --settings /app/maven3.6/conf/settings-iiot.xml/app/maven-3.6.2/bin/mvn -e clean install -Dmaven.test.skip=true -P test --settings /app/maven-3.6.2/conf/settings-iiot.xml"""stage 'deploy'sh"""echo "========start docker build========="cd $workspace/$app_namedocker login -u admin -p Harbor12345 10.1.19.21:21020sed -i 's/env_file/$env_file/g' Dockerfilesed -i 's/app_name/$app_name/g' Dockerfilesed -i 's/app_version/$app_version/g' Dockerfilesed -i 's/harbor_registry/10.1.19.21:21020/g' Dockerfiledocker build -t 10.1.19.21:21020/pro/$app_name:$image_version .docker push 10.1.19.21:21020/pro/$app_name:$image_versiondocker rmi 10.1.19.21:21020/pro/$app_name:$image_versionsed -i 's/image_version/$image_version/g;s/appname/$app_name/g;s/harbor_registry/10.1.19.21:21020/g;s/name_space/$name_space/g;s/containerport/$containerport/g;s/appport/$appport/g;s/replicas_num/$replicas_num/g' k8s-deployment-service.ymlecho "========start k8s deployment========="kubectl apply -f k8s-deployment-service.yml --namespace=$name_space --kubeconfig=/root/.kube/config"""}
前端脚本
前端打包分两种:
1种:手动本地 npm run build后上传dist前端打包文件
2种:本地不build,直接在jenkins上build,然后jenkins服务器上需要上传node_modules文件,例如
cp -r /data/node_modules .
npm run build
node {stage 'checkout'sh"""#每次打包清空工作空间目录rm -rf $workspace/*cd $workspace#到工作空间下从远端svn服务端拉取代码svn co svn://10.1.19.21/repo/技术中台/低代码开发平台/projects/iiot-eqp-app/iiot-eqp-web --username "lipeigen" --password "DG-svn-123456""""stage 'Vue Build'sh"""cd $workspace/$app_name#编译前台包,生成distif [ -d "$workspace/$app_name/dist/" ];thenecho "dist文件夹已存在,跳过打包..."elseecho "dist文件夹不存在,系统打包..."cp -r /data/node_modules .npm run buildfi"""stage 'deploy'sh"""echo "========start docker build========="cd $workspace/$app_namedocker login -u admin -p Harbor12345 10.1.19.21:21020sed -i 's/env_file/$env_file/g' Dockerfilesed -i 's/app_name/$app_name/g' Dockerfilesed -i 's/app_version/$app_version/g' Dockerfilesed -i 's/harbor_registry/10.1.19.21:21020/g' Dockerfiledocker build -t 10.1.19.21:21020/pro/$app_name:$image_version .docker push 10.1.19.21:21020/pro/$app_name:$image_versiondocker rmi 10.1.19.21:21020/pro/$app_name:$image_versionsed -i 's/image_version/$image_version/g;s/appname/$app_name/g;s/harbor_registry/10.1.19.21:21020/g;s/name_space/$name_space/g;s/containerport/$containerport/g;s/appport/$appport/g;s/replicas_num/$replicas_num/g' k8s-deployment-service.ymlecho "========start k8s deployment========="kubectl apply -f k8s-deployment-service.yml --namespace=$name_space --kubeconfig=/root/.kube/configtar -zcf vue.tar.gz nginx.confsshpass -p "e5hfz^I^X98LxQtC" scp -P 20000 -o StrictHostKeyChecking=no -r $workspace/$app_name/vue.tar.gz Oper1@10.1.19.11:/usr/local/nginx/vhost/vue.tar.gzsshpass -p "e5hfz^I^X98LxQtC" ssh -p 20000 Oper1@10.1.19.11 /bin/bash -x /app2/deploy-vue.sh $app_namesshpass -p "RCJ5ADeKKtBWMwIe" scp -P 20000 -o StrictHostKeyChecking=no -r $workspace/$app_name/vue.tar.gz Oper1@10.1.19.12:/usr/local/nginx/vhost/vue.tar.gzsshpass -p "RCJ5ADeKKtBWMwIe" ssh -p 20000 Oper1@10.1.19.12 /bin/bash -x /app2/deploy-vue.sh $app_name"""}
添加测试和生产的分组


上传jenkins插件 ,在文件中可以下载

vue多环境配置切换
增加env的三个配置环境文件,设置NODE_ENV="dev"

修改package.json文件,配置不同环境build配置:
打包dev环境命令: npm run build
打包test环境命令: npm run test
打包prod环境命令: npm run prod
对应的jenkins脚本中的命令也进行修改
"scripts": {"serve": "vue-cli-service serve","build": "vue-cli-service build --mode development","build:prod": "vue-cli-service build --mode production","build:test": "vue-cli-service build --mode test","lint": "vue-cli-service lint","fix-memory-limit": "cross-env LIMIT=8096 increase-memory-limit"},

相关文章:
jenkins配置+vue打包多环境切换
jenkins配置流水线过程 1.新建item 加入相关的参数就行了。 流水线脚本设置 后端脚本 node {stage checkoutsh"""#每次打包清空工作空间目录rm -rf $workspace/*cd $workspace#到工作空间下从远端svn服务端拉取代码svn co svn://10.1.19.21/repo/技术中台/低…...
idea和jdk的安装教程
1.JDK的安装 下载 进入官网,找到你需要的JDK版本 Java Downloads | Oracle 中国 我这里是windows的jdk17,选择以下 安装 点击下一步,安装完成 配置环境变量 打开查看高级系统设置 在系统变量中添加两个配置 一个变量名是 JAVA_HOME …...
HTML静态网页成品作业(HTML+CSS)——电影网首页网页设计制作(1个页面)
🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…...
大数据系列之:Flink Doris Connector,实时同步数据到Doris数据库
大数据系列之:Flink Doris Connector,实时同步数据到Doris数据库 一、版本兼容性二、使用三、Flink SQL四、DataStream五、Lookup Join六、配置通用配置项接收器配置项查找Join配置项 七、Doris 和 Flink 列类型映射八、使用Flink CDC访问Doris的示例九、…...
LabVIEW VI 多语言动态加载与运行的实现
在多语言应用程序开发中,确保用户界面能够根据用户的语言偏好动态切换是一个关键需求。本文通过分析一个LabVIEW程序框图,详细说明了如何使用LabVIEW中的属性节点和调用节点来实现VI(虚拟仪器)界面语言的动态加载与运行。此程序允…...
Unity引擎基础知识
目录 Unity基础知识概要 1. 创建工程 2. 工程目录介绍 3. Unity界面和五大面板 4. 游戏物体创建与操作 5. 场景和层管理 6. 组件系统 7. 脚本语言C# 8. 物理引擎和UI系统 学习资源推荐 Unity引擎中如何优化大型游戏项目的性能? Unity C#脚本语言的高级编…...
练习题- 探索正则表达式对象和对象匹配
正则表达式(Regular Expressions)是一种强大而灵活的文本处理工具,它允许我们通过模式匹配来处理字符串。这在数据清理、文本分析等领域有着广泛的应用。在Python中,正则表达式通过re模块提供支持,学习和掌握正则表达式对于处理复杂的文本数据至关重要。 本文将探索如何在…...
Java集合提升
1. 手写ArrayList 1.1. ArrayList底层原理细节 底层结构是一个长度可以动态增长的数组(顺序表)transient Object[] elementData; 特点:在内存中分配连续的空间,只存储数据,不存储地址信息。位置就隐含着地址。优点 节…...
uniapp 微信小程序生成水印图片
效果 源码 <template><view style"overflow: hidden;"><camera device-position"back" flash"auto" class"camera"><cover-view class"text-white padding water-mark"><cover-view class"…...
ElasticSearch相关知识点
ElasticSearch中的倒排索引是如何工作的? 倒排索引是ElasticSearch中用于全文检索的一种数据结构,与正排索引不同的是,正排索引将文档按照词汇顺序组织。而倒排索引是将词汇映射到包含该词汇的文档中。 在ElasticSearch中,倒排索…...
css 文字图片居中及网格布局
以下内容纯自已个人理解,直接上代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…...
解决ImportError: DLL load failed while importing _rust: 找不到指定的程序
解决ImportError: DLL load failed while importing _rust: 找不到指定的程序 python使用库cryptography 当 from cryptography.hazmat.bindings._rust import exceptions as rust_exceptions 时,会报错: ImportError: DLL load failed while importin…...
集合-List去重
1.利用Set去重 @Test public void distinctList() {List<String> oldList = new ArrayList<>();oldList.add("a");oldList.add("a");oldList.add("b");oldList.add("c");oldList.add("d");List<String> …...
ST-LINK USB communication error 非常有效的解决方法
文章目录 一、检查确定是ST-LINK USB communication error的问题二、关闭文件,打开keil软件所在文件夹,找到STLink文件夹,找到该应用程序双击 一、检查确定是ST-LINK USB communication error的问题 二、关闭文件,打开keil软件所在…...
探索CSS的:future-link伪类:选择指向未来文档的链接
CSS(层叠样式表)是Web设计中用于描述网页元素样式的语言。随着CSS4的提案,引入了许多新的选择器,其中之一是:future-link伪类。然而,需要注意的是,:future-link伪类目前还处于提议阶段,并没有在…...
【C++】序列与关联容器(三)map与multimap容器
【C】序列与关联容器(三)map与multimap容器 一、map二、multiset / multimap 一、map 树中的每个结点的类型是一个std::pair //pair的类型是<const key,value> pair是一个包含两个指针的结构体,第一个指针指向该节点的key,…...
ActiveMQ、RabbitMQ、Kafka、RocketMQ在优先级队列、延迟队列、死信队列、重试队列、消费模式、广播模式的区别
ActiveMQ、RabbitMQ、Kafka、RocketMQ这四款消息队列在优先级队列、延迟队列、死信队列、重试队列、消费模式、广播模式等方面各有其特点和差异。以下是对这些方面的详细比较: 1. 优先级队列 ActiveMQ:支持优先级队列,可以在发送消息时指定…...
首款会员制区块链 Geist 介绍
今天,Pixelcraft Studios 很高兴地宣布即将推出 Geist,这是一个由 Base、Arbitrum、Alchemy 以及 Aavegotchi 支持的全新 L3。 Geist 之前的代号为 “Gotchichain”,是首个专为游戏打造的会员专用区块链。 为什么选择 Geist? …...
CANoe软件中Trace窗口的筛选栏标题不显示(空白)的解决方法
文章目录 问题描述原因分析解决方案扩展知识总结问题描述 不知道什么情况,CANoe软件中Trace窗口的筛选栏标题突然不显示了,一片空白。现象如下: 虽然不影响CANoe软件的使用,但是观感上非常难受,对于强迫症患者非常不友好。 原因分析 按照常规思路,尝试了: 1、重启CAN…...
日期类代码实现-C++
一、目标 通过前面对类和对象的介绍我们可以自己通过C代码初步实现一个简单的日期类。 实现的主要操作有: 1.日期类的构造函数 2.日期类的拷贝构造函数(在头文件中实现) 3.日期类的比较运算符重载 4.日期类的计算运算符重载 5.流插入运…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
循环语句之while
While语句包括一个循环条件和一段代码块,只要条件为真,就不断 循环执行代码块。 1 2 3 while (条件) { 语句 ; } var i 0; while (i < 100) {console.log(i 当前为: i); i i 1; } 下面的例子是一个无限循环,因…...
触发DMA传输错误中断问题排查
在STM32项目中,集成BLE模块后触发DMA传输错误中断(DMA2_Stream1_IRQHandler进入错误流程),但单独运行BLE模块时正常,表明问题可能源于原有线程与BLE模块的交互冲突。以下是逐步排查与解决方案: 一、问题根源…...
c++算法学习3——深度优先搜索
一、深度优先搜索的核心概念 DFS算法是一种通过递归或栈实现的"一条路走到底"的搜索策略,其核心思想是: 深度优先:从起点出发,选择一个方向探索到底,直到无路可走 回溯机制:遇到死路时返回最近…...
组合模式:构建树形结构的艺术
引言:处理复杂对象结构的挑战 在软件开发中,我们常遇到需要处理部分-整体层次结构的场景: 文件系统中的文件与文件夹GUI中的容器与组件组织结构中的部门与员工菜单系统中的子菜单与菜单项组合模式正是为解决这类问题而生的设计模式。它允许我们将对象组合成树形结构来表示&…...
2025-06-08-深度学习网络介绍(语义分割,实例分割,目标检测)
深度学习网络介绍(语义分割,实例分割,目标检测) 前言 在开始这篇文章之前,我们得首先弄明白,什么是图像分割? 我们知道一个图像只不过是许多像素的集合。图像分割分类是对图像中属于特定类别的像素进行分类的过程,即像素级别的…...
