利用脚本将代码部署到测试环境(.sh)

1.将上次的部署文件备份名为xxx_bak

2.首次需要输入环境密码

3.并生成一个zip的压缩包,方便部署到线上环境

4.在终端 输入./update.sh 则可执行

文件名update.sh,放在package.json文件同级

# @example: 1. ./update.sh 2. 输入服务器密码 【 如果不想每次都输入密码可以先生成密钥对,在复制到远程服务器中,终端执行操作 1. ssh-keygen -t rsa 2. ssh-copy-id root@192.168.0.140 】
# 设置变量 LOCAL_DIR - 当前目录,USER - 服务器用户名,SERVER - 服务器地址,REMOTE_DIR - 需要存放的服务器目录,FILE_NAME - 文件名称,ZIP_NAME - 生成压缩包名称
LOCAL_DIR=$(pwd)
USER="root"
SERVER="192.168.0.140"
REMOTE_DIR="/opt/weicx/webapps"
FILE_NAME="workCenter"
ZIP_NAME="$FILE_NAME$(date +'%Y%m%d').zip"# 打包前端项目
npm run build# 区分 Windows 和 Mac 进行压缩
function ZIP() { [[ "$OSTYPE" == "darwin"* ]] && { zip -r "$ZIP_NAME" "$(basename "$FILE_NAME")";} || { powershell -c "Compress-Archive -Path "$FILE_NAME" -DestinationPath "$ZIP_NAME" -Force"; } }# 本地不存在就生成 SSH 密钥对
[ ! -f ~/.ssh/id_rsa ] && { ssh-keygen -t rsa -b 2048 -N "" -f ~/.ssh/id_rsa; } || { echo "已存在公钥!"; }    # 如果未添加就将公钥复制到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@$SERVER 2>/dev/null# 将文件压缩、检查打包是否成功
[ $? -eq 0 ] && { ZIP; echo "压缩 $FILE_NAME 成功!"; } || { echo "打包 $FILE_NAME 失败!"; exit 1; }# 打印当前目录
echo "当前目录为:$LOCAL_DIR"# 备份并删除服务器中原有包
ssh $USER@$SERVER "cd $REMOTE_DIR && rm -rf $FILE_NAME'_bak' && [ -d $FILE_NAME ] && { cp -r $FILE_NAME $FILE_NAME'_bak'; echo "备份成功!"; } || { echo "备份文件不存在!"; } && rm -rf $FILE_NAME" # 使用 SCP 命令将文件上传到远程服务器
scp -r ./$FILE_NAME $USER@$SERVER:$REMOTE_DIR# 检查 SCP 命令是否成功执行
[ $? -eq 0 ] && echo "上传文件 $FILE_NAME 成功!" || echo "上传文件 $FILE_NAME 失败!"

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《零基础入门学习Python》第046讲:魔法方法:描述符(Property的原理)

0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 常言道:“无规矩不成方圆”,讲的是万事万物的发展都要在一定的规则下去运行,只有遵循一定的协议去做,事情才能够按照…

k8s1.18.20:cert-manager 1.8 安装部署

cert-manager 安装部署 一、官网安装文档 https://cert-manager.io/docs/installation/ 1.1、简介 cert-manager 在 Kubernetes 集群中增加了证书 (certificates) 和证书颁发者 (certificate issuers) 作为资源类型,并简化了获取、更新和应用这些证书的过程。 …

基于 Orbit 的云原生应用交付基础原则与良好实践

点击官网了解详情 本文作者:何文强——腾讯云 CODING 高级架构师。 负责 CODING DevOps产品解决方案架构设计和技术产品布道以及 CODING 云原生技术研究与落地实践。在多个技术大会担任演讲嘉宾,腾讯云 CODING DevOps 课程认证出品人,腾讯云云…

PWM呼吸灯+流水灯设计

完成任务: 在流水灯基础上加入pwm呼吸灯设计,关于pwm呼吸灯设计可以看博主上一篇博客PWM呼吸灯设计 ,开发板上灯每两秒进行一次切换,每一个的亮灭间隔为一秒。 代码参考: module pwm_led_change(input wire …

数据结构初阶--排序2

目录 前言快速排序思路hoare版本代码实现挖坑法代码实现前后指针法代码实现 快排优化三项取中法代码实现三指针代码实现 快排非递归代码实现 归并排序思路代码实现归并非递归代码实现 计数排序思路代码实现 前言 本篇文章将继续介绍快排,归并等排序算法以及其变式。…

antd-React Table 中文转化

1.首先需要进行中文包导入 2.引入标签对Table进行包裹即可 import zh_CN from antd/lib/locale-provider/zh_CN;import {ConfigProvider} from antd;<ConfigProvider locale{zh_CN}><Tablecolumns{columns}rowKey{record > record.id}dataSource{data}pagination{p…

【ArcGIS】shp导入报错ORA-00911无效字符

这个当个问题记录以下&#xff0c;就是shp文件名或者字段名有非正常字符&#xff0c;修改下名称重新导入即可&#xff1b; 直接改shp没法修改字段&#xff0c;会报错&#xff0c;需要先转化为gdb文件&#xff0c;然后在修改

算法篇--两数之和,梦开始的地方

目录 1.概念&#xff1a;2.两数之和&#xff08;1&#xff09;.暴力破解法&#xff08;2&#xff09;.使用哈希表 3.区别 1.概念&#xff1a; 非形式地说&#xff0c;算法(algorithm)就是任何良定义的计算过程&#xff0c;该过程取某个值或值的集合作为输入并产生某个值或值的集…

el-table组件插槽“slot-scope”

目录 一、代码展示 二、返回的数组对象不含value或者ispass&#xff0c;不会报错 三、插槽里面放的是要手动输入的值时 一、代码展示 <el-table v-loading"loading" :data"checklistList" selection-change"handleSelectionChange"><…

OV7670摄像头模块的使用

OV7670摄像头模块介绍 OV7670 CAMERACHIPTM 图像传感器&#xff0c;体积小、 工作电压低&#xff0c;提供单片 VGA 摄像头和影像处理器的所有功能。通过 SCCB 总线控制&#xff0c;可以输出整帧、子采样、取窗口等方式的各种分辨率 8 位影响数据。该产 品 VGA 图像最高达到 30…

Anaconda镜像源

Anaconda镜像源 清华镜像源阿里云镜像源中科大镜像源北大镜像源其他镜像源 清华镜像源 https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ # 清华大学Anaconda镜像使用帮助 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ # Anaconda安装包下载 https://mirro…

【Linux】内存使用相关

free 命令 查看内存大小 free -g :G单位 free -h : 可读性较高较理解 free -m : MB单位 total: 总内存used: 正在运行的进程使用的内存(used total – free – buff/cache)free: 未使用的内存 (free total – used – buff/cache)shared: 多个进程共享的内存buffers: 内存保留…

面试题更新之-伪元素和伪类

文章目录 伪元素和伪类是什么&#xff1f;伪元素&#xff08;Pseudo-elements&#xff09;:伪类&#xff08;Pseudo-classes&#xff09;: css伪元素和伪类的区别使用css伪元素的好处使用css伪类的好处 伪元素和伪类是什么&#xff1f; 在CSS中&#xff0c;伪元素&#xff08;…

xpath下载安装——Python爬虫xpath插件下载安装(2023.7亲测可用!!)

目录 1.免费下载插件链接&#xff08;若失效评论区留言发送最新链接&#xff09;&#xff08;2023.7亲测可用&#xff09; 2.安装插件 &#xff08;1&#xff09;打开chrome浏览器页面&#xff0c;点击&#xff1a;右上角三个点 > 扩展程序 > 管理拓展程序 &#xff…

MongoDB(MongoTemplate和MongoRepository)对比

目录 MongoTemplateMongoRepository MongoTemplate //条件查询GetMapping("findUser")public void findUserList() {Query query new Query(Criteria.where("name").is("zhang3").and("age").is(33));List<User> users mongoT…

gitbash2.41安装教程——2023.07

文章目录 1、下载安装包2、安装 1、下载安装包 进入官网下载&#xff0c;官网链接 上面有多种系统可以选择&#xff0c;我是windows&#xff0c;点击windows进行下载 这里可以直接下载最新版本的git 2.41.0 64位。 下载可能有点慢&#xff0c;耐心等待。 2、安装 下载完…

Hive基本操作

基本概念 Hive是基于Hadoop的一个【数据仓库工具】&#xff0c;可以将结构化和半结构化的数据文件映射为一张数据库表&#xff0c;并提供简单的sql查询功能。 介绍 Hive本质是将SQL转换为MapReduce的任务进行运算&#xff0c;底层由HDFS来提供数据存储&#xff0c;简单来说H…

JVM——类加载和垃圾回收

目录 前言 JVM简介 JVM内存区域划分 JVM的类加载机制 1.加载 双亲委派模型 2.验证 验证选项 3.准备 4.解析 5.初始化 触发类加载 JVM的垃圾回收策略 GC 一&#xff1a;找 谁是垃圾 1.引用计数 2.可达性分析 &#xff08;这个方案是Java采取的方案&#x…

基于单片机智能台灯坐姿矫正器视力保护器的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;LCD1602液晶显示当前当前光线强度、台灯灯光强度、当前时间、坐姿距离等&#xff1b;按键设置当前时间&#xff0c;闹钟、提醒时间、坐姿最小距离&#xff1b;通过超声波检测坐姿&#xff0c;当坐姿不正容易对眼睛和身体腰部等造成…

MySQL索引详解

索引 在MySQL中&#xff0c;查询方式可以根据访问表数据的方式分为两种&#xff1a;全表扫描和使用索引。 全表扫描&#xff08;Full Table Scan&#xff09;&#xff1a; 全表扫描是指在查询过程中&#xff0c;MySQL会遍历整个表的每一行来检查满足查询条件的数据。当查询条件…