Initial commit: add AutoDeploy project

This commit is contained in:
wangpeng
2026-07-14 16:30:36 +08:00
commit 2d7b6216ba
23 changed files with 3615 additions and 0 deletions

107
README.md Normal file
View File

@@ -0,0 +1,107 @@
# 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 部署、生产环境进程守护和凭据托管暂不在本版本范围内。