如何使用pscp和plink做自动化部署,windows上bat脚本一键打包,传输,运行
安装pscp和plink
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
后台部署 - 打包上传并远程调用启动脚本
bat脚本
@echo off rem 打印的中文不乱码,默认是gbk,改为utf8 chcp 65001 rem 拷贝的文件名称 set name=zhong-eureka rem 拷贝文件完整路径 set folder=E:\git\zhong\%name%\target\%name%.jar rem 服务器IP set ip=192.168.1.107 rem 服务器密码 set password=123456 echo "打包.." e: cd E:\git\zhong\%name% call mvn clean install -Dmaven.test.skip=true echo "传输到linux服务器home目录下..." pscp -pw %password% %folder% root@%ip%:/home/ echo "启动,远程调用linux服务器上的sh脚本..." plink -batch -pw %password% root@%ip% /home/%name%.sh @cmd.exe exist
linux的sh脚本
#!/bin/sh #该文件必须放在jar包的目录下,因为是以相对路径来运行的。不放jar包目录的话,可以直接在jar_name参数写绝对路径 #start 设置三个参数 #环境 profile= #jar的路径和名称 jar_name=/home/zhong-eureka.jar #远程断点端口 remote_address= #end 设置三个参数 echo "运行$jar_name" #查询进程,并杀掉当前jar/java进程 pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $2}'` echo "进程为$pid" kill -9 $pid echo "$pid进程终止成功" sleep 2 source /etc/profile #判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志 if test -e $jar_name then echo "$jar_name存在,开始启动此程序..." # 判断是否有远程断点端口 if test -z "$remote_address" then # 启动jar包 nohup java -Xms64m -Xmx128m -jar $jar_name >/dev/null 2>&1 & echo "远程断点端口为空" else # 启动jar包 nohup java -Xms64m -Xmx128m -jar $jar_name >/dev/null 2>&1 & echo "远程断点端口为$remote_address" fi echo "$jar_name 启动成功..." pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $2}'` echo "新进程为$pid" else echo "$jar_name 文件不存在,请检查。" fi
---------------------------------------------------------------------
前端部署 - 打包并上传
@echo off chcp 65001 rem 拷贝文件完整路径 set folder=E:\git\zhong-web\zhong-shop-owner\dist\ echo "打包.." e: cd E:\git\zhong-web\zhong-shop-owner\ call npm run build echo "上传到服务器" pscp -pw 123456 -r %folder% root@192.168.1.107:/home/project/ @cmd.exe exist