Files
AutoDeploy/README.md
2026-07-14 16:31:23 +08:00

5.0 KiB
Raw Permalink Blame History

AutoDeploy

AutoDeploy 是一个面向 Windows 的 Spring Boot + Vue 本地自动化部署工具。它通过图形界面扫描前后端项目、检查开发环境、生成部署步骤并依次完成后端构建、前端依赖安装、SQL 导入和服务启动。

主要功能

  • 自动识别 Maven/Gradle Spring Boot 后端、一个或多个 Vue/Vite 前端以及 .sql 文件。
  • 从 Maven、Gradle 和 Spring Boot 配置中推断 Java 版本,推荐 JDK 8、11、17 或 21。
  • 检测 JDK、Maven、Gradle、Node.js、npm、Vue CLI、MySQL 和 Git。
  • 支持手动指定工具路径,并可将工具目录写入当前用户的 PATHJDK、Maven 和 Gradle 会同步设置对应的环境变量。
  • 通过 winget 辅助安装常用开发环境,执行安装前会要求用户确认。
  • 使用 Maven 或 Gradle 构建后端;已有可运行 JAR 时自动跳过重复构建。
  • 前端缺少 node_modules 时自动执行 npm install,随后运行 servedevstart 脚本。
  • 可按顺序导入多个 SQL 文件,并启动后端、用户端和管理端。
  • 服务启动前检查端口占用并终止旧进程,等待新服务端口就绪后再继续。
  • 后端在独立控制台中显示实时输出,各服务同时保留运行日志。

运行环境

  • Windows 10/11
  • Python 3.9 或更高版本(需包含 TkinterWindows 官方 Python 安装包默认提供)
  • 待部署项目所需的 JDK、Maven/Gradle、Node.js/npm 和 MySQL
  • 可选:winget,用于在界面中安装缺失工具

本项目本身只使用 Python 标准库,不需要执行 pip install

快速开始

克隆项目后进入项目目录:

python main.py

在工作台中按以下顺序操作:

  1. 选择包含后端、前端和 SQL 文件的项目根目录。
  2. 点击“扫描项目”,确认识别到的组件和推荐 JDK 版本。
  3. 点击“检测环境”;缺失的工具可以通过“安装环境”处理,也可以手动选择可执行文件。
  4. 如果需要导入 SQL填写 MySQL 用户、密码和数据库名。数据库名默认取第一个 SQL 文件的文件名。
  5. 点击“执行部署”,在运行日志中查看每个步骤和最终访问地址。

当前默认端口如下:

服务 端口 地址
Spring Boot 后端 8080 http://localhost:8080
管理端 8081 http://localhost:8081
用户端 8082 http://localhost:8082

如果 Vue/Vite 配置文件中声明了端口,工具会优先读取该配置;端口发生冲突时部署会停止并给出提示。

项目识别规则

  • 后端:查找 pom.xmlbuild.gradlebuild.gradle.kts,并结合 Spring Boot 依赖和 src/main/java 判断候选项目。
  • 前端:查找 package.json,结合 Vue 依赖、构建脚本及 vue.config.js/vite.config.* 判断项目。
  • 前端角色:目录名包含 adminmanage后台 等关键字时识别为管理端;包含 userclientweb用户 等关键字时识别为用户端。
  • 启动脚本:依次使用 servedevstart 中第一个可用的 npm 脚本。
  • SQL递归收集项目中的 .sql 文件;扫描时跳过 .gitnode_modulestargetbuilddist 等目录。

构建与运行流程

部署计划会根据扫描结果动态生成,典型顺序为:

  1. 使用 mvn clean package -DskipTests 或 Gradle bootJar 构建后端。
  2. 为尚未安装依赖的前端执行 npm install
  3. 使用 MySQL 命令行依次导入 SQL 文件。
  4. 使用 java -jar 启动后端,并等待 8080 端口就绪。
  5. 使用 npm 启动各前端开发服务器,并等待对应端口就绪。
  6. 在运行日志中输出所有服务的访问地址。

运行日志默认写入待部署项目根目录下的 deploy 文件夹:

  • backend.log
  • frontend-user.log
  • frontend-admin.log

自定义工具路径保存在本机 .deploy_tool_config/tool_paths.json 中,该目录已加入 .gitignore

测试

运行全部单元测试:

python -m unittest discover -s tests -p "test_*.py"

项目结构

.
├── main.py                      # 程序入口
├── deploy_tool/
│   ├── gui.py                   # Tkinter 工作台
│   ├── scanner.py               # 项目扫描与组件识别
│   ├── environment.py           # 本机环境检测与工具发现
│   ├── installer.py             # winget 安装命令与 JDK 推荐
│   ├── path_manager.py          # 用户环境变量管理
│   ├── deployer.py              # 部署计划、命令执行与服务管理
│   └── service_console.py       # 后端独立控制台与日志转存
├── tests/                       # 单元测试
└── docs/                        # 设计说明与实现计划

当前范围

当前版本聚焦 Windows 本机的开发/演示环境部署。远程服务器上传、Nginx 配置、Docker 部署、生产环境进程守护和凭据托管暂不在本版本范围内。