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.流插入运…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...