windows通过脚本自动打包部署springboot项目,并上传服务器启动

windows通过脚本自动打包部署springboot项目,并上传服务器启动

绿林寻猫
2022-01-17 / 0 评论 / 2,195 阅读 / 正在检测是否收录...

前提准备

安装PuTTY
安装WinSCP

创建脚本

首先在项目目录下新建bin文件夹存放.bat文件,然后新建put.bat

编写脚本

put.bat

@echo off
echo.
echo [信息] 打包Web工程,生成war/jar包文件。
echo.

%~d0
cd %~dp0
cd ../
call mvn clean package -Dmaven.test.skip=true
echo [信息]打包完成
echo [信息]准备上传...
:: 先备份当前目录路径
set oldPath=%cd%

:: 设置winscp安装目录(这里修改为个人实际的安装路径)
set winscpInstallDir=D:\software\winscp
:: 设置PuTTY安装目录(这里修改为个人实际的安装路径)
set puTTYInstallDir=D:\software\PuTTY

:: 远程主机linux IP
:: 如果不需要命令行输入可以直接写死, 如:
set ipaddr=110.11.11.11
:: set /p ipaddr=请输入目标主机IP: 

:: 登录用户名
:: 如果不需要命令行输入可以直接写死, 如:
set username=root
:: set /p username=username: 
:: 登录密码(注意啦!!!!)
:: 如果密码中存在 & @ 等特殊字符时,请输入 ^ 用与转义
:: 至于这里为什么需要连续3个^,是因为密码在set password中被转义一次,在打开远程连接的时候会再被转义一次
:: 如:  admin^^^@123^^^&456 ==> admin^^@123^^&456 ==> admin^@123^&456 ==> admin@123&456
:: 声明变量 ==》 set赋值转义一次 ==》往winscp.txt中写时候再转义一次 ==》 实际执行时候
:: 如果不需要命令行输入可以直接写死(也需要转义), 如:
:: set password=123456
set /p password=password: 
:: 设置需要上传的文件,可找到打包好项目(jar/war)
set localFilePath=D:\project\demo.jar

:: 保存的linux远程目录
set remotePath=/www/project/

:: 打印提示信息
Echo 准备推送文件到远程服务器...

:: 生成winscp执行的脚本
Echo option batch on > winscp.txt
Echo option confirm off > winscp.txt
:: 打开远程链接
:: 如果用户名或密码带有特殊字符,推荐直接在这里写死(也需要转义)
:: 密码与ip之间的@符号,也需要转义 写为^@
Echo open %username%:%password%^@%ipaddr% > winscp.txt
:: 进入到目标文件夹
Echo cd %remotePath% >> winscp.txt
Echo option transfer binary >> winscp.txt
:: 上传到远程
Echo put %localFilePath% >> winscp.txt
Echo close >> winscp.txt
Echo exit >> winscp.txt


:: 到winscp.com 所在盘符
cd %winscpInstallDir%

:: 使用winscp将文件上传到远程服务器,script为生成的步骤文件
winscp.com /console /script=%oldPath%\winscp.txt

:: 删除本次上传生成的winscp.txt
cd %oldPath%
del winscp.txt  
Echo 推送完成...

:: 到PuTTY 所在盘符
cd %puTTYInstallDir%
:: 使用PuTTY执行linux脚本命令,test.sh为linux上执行的命令
Echo 开始启动...
putty.exe -ssh -pw %password% -m d:/test.sh %username%^@%ipaddr%
Echo 结束...
pause

test.sh

其中start.sh为linux目录中的执行文件,可参考 《linux脚本执行kill进程并重启》

#!/bin/sh

cd /www/project/
#mkdir /tmp/test061502
sh start.sh
#mkdir test06170
0

评论 (0)

取消