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

108 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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。
- 支持手动指定工具路径,并可将工具目录写入当前用户的 `PATH`JDK、Maven 和 Gradle 会同步设置对应的环境变量。
- 通过 `winget` 辅助安装常用开发环境,执行安装前会要求用户确认。
- 使用 Maven 或 Gradle 构建后端;已有可运行 JAR 时自动跳过重复构建。
- 前端缺少 `node_modules` 时自动执行 `npm install`,随后运行 `serve``dev``start` 脚本。
- 可按顺序导入多个 SQL 文件,并启动后端、用户端和管理端。
- 服务启动前检查端口占用并终止旧进程,等待新服务端口就绪后再继续。
- 后端在独立控制台中显示实时输出,各服务同时保留运行日志。
## 运行环境
- Windows 10/11
- Python 3.9 或更高版本(需包含 TkinterWindows 官方 Python 安装包默认提供)
- 待部署项目所需的 JDK、Maven/Gradle、Node.js/npm 和 MySQL
- 可选:`winget`,用于在界面中安装缺失工具
本项目本身只使用 Python 标准库,不需要执行 `pip install`
## 快速开始
克隆项目后进入项目目录:
```powershell
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.xml``build.gradle``build.gradle.kts`,并结合 Spring Boot 依赖和 `src/main/java` 判断候选项目。
- 前端:查找 `package.json`,结合 Vue 依赖、构建脚本及 `vue.config.js`/`vite.config.*` 判断项目。
- 前端角色:目录名包含 `admin``manage``后台` 等关键字时识别为管理端;包含 `user``client``web``用户` 等关键字时识别为用户端。
- 启动脚本:依次使用 `serve``dev``start` 中第一个可用的 npm 脚本。
- SQL递归收集项目中的 `.sql` 文件;扫描时跳过 `.git``node_modules``target``build``dist` 等目录。
## 构建与运行流程
部署计划会根据扫描结果动态生成,典型顺序为:
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`
## 测试
运行全部单元测试:
```powershell
python -m unittest discover -s tests -p "test_*.py"
```
## 项目结构
```text
.
├── 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 部署、生产环境进程守护和凭据托管暂不在本版本范围内。