每次增加博客功能都要进行3个项目的
编译
和发布
2个VUE前端项目(博客和后台) 编译打包
1个Springboot API后端 编译打包
还要重启服务
手动挡是用不下去了.
由于只写过一些简单的linux脚本
所以大致记录一下我学习windows脚本的编写过程
0.脚本中需要做什么
1.调用npm run build
对前端项目进行编译打包
2.调用mvnw package
对Springboot进行打包
3.上传至Linux服务器
4.重启docker
容器
1.编译项目
在windows 执行脚本那就是bat
没跑了
bat (批处理文件类型)
在DOS和Windows(任意)系统中,.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。
----------------------百度百科
项目目录:
|project
|--deploy.bat
|--Springboot-server (maven Springboot)
|--vue-front (vue cli3)
|--vue-admin (vue cli3)
首先,写入
deploy.bat
rem 直接使用命令会在新的cmd进程中执行,并且当前cmd进程将会马上执行下一行
rem npm run build:prod -prefix ./vue-front
rem 使用call 名调用,会在当前cmd进程中执行,并且执行完之后才会执行下一行
rem npm -prefix 可以指定前缀.即命令的工作目录
call npm run build:prod -prefix ./vue-front
call npm run build:prod -prefix ./vue-admin
rem 暂时不知道怎么设置mvnw的工作目录,先cd过去再执行,完了再cd回来
cd Springboot-server
call mvnw clean
call mvnw package -DskipTests
cd ..
至此,3个项目分别打包在了自己的目录下, 项目目录:
|project
|--deploy.bat
|--Springboot-server
|--target
|--app.jar
|--vue-front
|--dist
|--vue-admin
|--dist
2.windows上传文件到Linux
好了,编译打包完了,下一步是要上传到Linux服务器
在这之前我是使用Xftp进行图形化操作的,但是它的帮助文档只写了怎么用命令行启动图形化界面
ORZ
Google 一番,得到了WinSCP
什么是 WinSCP
WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。
同时也支持命令行脚本运行
---------WinSCP
大致用法:
1.通过winscp 进入scp命令界面 或者 winscp /script=<你的winSCP脚本>
2.open user:pwd@ip:port
打开到服务器的SSH连接
3.put <本地目录> <远程目录>
上传文件
4.call
linux 命令
= 远程调用服务器linux 命令
5.close
关闭连接
其他命令参考脚本和任务自动化
callWinSCP.bat
call WinSCP /script=ScpScript.txt
ScpScript.txt
open user:pwd@ip:port
put E:\myfile.txt /root/myfile.txt
close
3.最终脚本
deploy.bat
加入调用 WinSCP
rem 直接使用命令会在新的cmd进程中执行,并且当前cmd进程将会马上执行下一行
rem npm run build:prod -prefix ./vue-front
rem 使用call 名调用,会在当前cmd进程中执行,并且执行完之后才会执行下一行
rem npm -prefix 可以指定前缀.即命令的工作目录
call npm run build:prod -prefix ./vue-front
call npm run build:prod -prefix ./vue-admin
rem 暂时不知道怎么设置mvnw的工作目录,先cd过去再执行,完了再cd回来
cd Springboot-server
call mvnw clean
call mvnw package -DskipTests
rem 返回上级目录
cd ..
rem /script="你的SCP脚本"
call WinSCP /script=ScpScript.txt
ScpScript.txt
注意:在SCP脚本中,使用的是WinSCP提供的命令
rem 打开SSH连接
open user:pwd@ip:port
echo ----------------开始上传文件到 远程 /root/wait-deploy 目录--------------------
put .\vue-admin\dist /root/wait-deploy/admin
put .\vue-front\dist /root/wait-deploy/front
put .\Springboot-server\target\app.jar /root/wait-deploy/app.jar
echo ----------------停止 Docker 运行--------------------
call sudo docker stop api
call sudo docker stop nginx
echo ----------------删除 远程 /root/docker/nginx/dist/admin 挂载目录--------------------
call rm -rf /root/docker/nginx/dist/admin
echo ----------------删除 远程 /root/docker/nginx/dist/front 挂载目录--------------------
call rm -rf /root/docker/nginx/dist/front
echo ----------------删除 远程 /root/docker/api/app.jar 挂载文件--------------------
call rm -rf /root/docker/api/app.jar
echo ----------------复制 远程 /root/wait-deploy 的文件到docker 挂载目录--------------------
call sudo cp -r /root/wait-deploy/admin /root/docker/nginx/dist/admin
call sudo cp -r /root/wait-deploy/front /root/docker/nginx/dist/front
call sudo cp -r /root/wait-deploy/vip-hoody-site-api.jar /root/docker/api/app.jar
echo ----------------启动 Docker 运行--------------------
call sudo docker start api
call sudo docker start nginx
close
exit
4. 其实不是每次都要上传发布
bat 脚本可以进行 goto操作,再加上用户输入后if判断,前往代码块
deploy.bat
:begin
echo off
echo 请选择需要执行的内容:
echo 1:build vue-Front
echo 2:build vue-Admin
echo 3:build Springboot-API
echo 4:build All and deploy to ECS
echo 5:quit
set deployall="false"
choice /c:1234 /m:"please select:"
if %errorlevel% == 4 goto end
if %errorlevel% == 3 goto buildAll
if %errorlevel% == 2 goto p1
if %errorlevel% == 1 goto p2
:buildAndDeploy
set all="true"
goto p1
:p1
rem do somethings build
if %all%=="true" (
goto p2
) else (
goto begin)
:p2
rem do somethings build
goto begin
:end
echo quit
附录
Winscp help 命令简介
C:\ > winscp
winscp> help
call 执行任意远程命令
cd 改变远程工作目录
checksum 计算远端文件的校验码
chmod 改变远程文件权限
close 关闭会话
cp 复制远端文件
echo 将参数显示为消息
exit 关闭所有会话并结束程序
get 从远程目录下载文件到本地目录
help 显示帮助
keepuptodate 在一个远程目录连续反映本地目录的改变
lcd 改变本地工作目录
lls 列出本地目录的内容
ln 新建远程符号链接
lpwd 显示本地工作目录
ls 列出远程目录的内容
mkdir 新建远程目录
mv 移动或者重命名远程文件
open 连接到服务器
option 设置或显示脚本选项的值
put 从本地目录上传文件到远程目录
pwd 显示远程工作目录
rm 删除远程文件
rmdir 删除远程目录
session 列出连接的会话或者选择活动会话
stat 获取远程文件属性
synchronize 用一个本地目录同步远程目录