# pykins **Repository Path**: aiy/pykins ## Basic Information - **Project Name**: pykins - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-30 - **Last Updated**: 2025-06-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 部署管理器 - GUI版本 一个基于Python开发的图形化部署管理工具,类似于Jenkins的轻量级版本。支持前端Vue项目和后端Spring Boot项目的自动构建和部署。 ## 🚀 功能特性 ### 项目管理 - ✅ 多项目配置和管理 - ✅ 项目启用/禁用控制 - ✅ 项目搜索和过滤 - ✅ 卡片式项目展示 - ✅ 项目配置的增删改查 ### 服务器连接 - ✅ 支持密码认证 - ✅ 支持SSH证书认证 - ✅ 连接测试功能 - ✅ 安全的密码加密存储 ### 自动部署 - ✅ 前端项目自动构建(npm/pnpm/yarn) - ✅ 后端项目自动构建(Maven/Gradle) - ✅ 选择性部署(支持只部署前端、只部署后端或前后端都部署) - ✅ 文件自动上传到服务器 - ✅ 远程部署脚本执行 - ✅ 实时部署进度显示 - ✅ 详细的部署日志 ### 用户界面 - ✅ 现代化的GUI界面 - ✅ 标签页式配置编辑 - ✅ 实时进度反馈 - ✅ 友好的错误提示 ## 📋 系统要求 - Windows 10/11 - Python 3.7+ (开发运行) - 网络连接到目标服务器 - SSH访问权限 ## 🛠️ 安装和使用 ### 方式一:直接运行(推荐用于开发) 1. **克隆或下载项目** ```bash git clone https://gitee.com/aiy/pykins.git cd deploy-app ``` 2. **安装依赖** ```bash pip install -r requirements.txt ``` 3. **运行GUI应用** ```bash python gui_deploy_app.py ``` 或者双击 `scripts/run_gui.bat` ### 方式二:打包成EXE(推荐用于生产) 1. **自动构建**(推荐): ```bash # 双击运行构建脚本 scripts\build_exe.bat # 或在命令行运行 .\scripts\build_exe.bat ``` 2. **手动构建**: ```bash # 安装PyInstaller pip install pyinstaller # 构建EXE python scripts\build.py ``` 3. **运行EXE** - 构建完成后,在 `dist` 目录下找到 `部署管理器.exe` - 双击运行即可 ## 📖 使用指南 ### 1. 创建新项目 1. 启动应用程序 2. 点击 "新建项目" 按钮 3. 填写项目基本信息: - 项目名称 - 启用状态 ### 2. 配置服务器信息 在 "服务器信息" 标签页中配置: - **IP地址**:目标服务器的IP地址 - **端口**:SSH端口(默认22) - **用户名**:SSH登录用户名 - **认证方式**:选择 "密码" 或 "证书" - **密码/证书路径**:根据认证方式填写 ### 3. 配置部署信息 在 "部署信息" 标签页中配置: - **前端部署目录**:前端文件在服务器上的目标目录 - **前端部署脚本**:部署完成后执行的脚本路径 - **后端部署目录**:后端文件在服务器上的目标目录 - **后端部署脚本**:部署完成后执行的脚本路径 ### 4. 配置编译信息 在 "编译信息" 标签页中配置: - **Java目录**:Java环境目录(可选) - **前端目录**:前端项目的本地路径 - **后端目录**:后端项目的本地路径 - **前端编译命令**:前端构建命令列表 - **前端输出目录**:前端构建产物目录 (默认: dist) - **后端编译命令**:后端构建命令列表 - **后端输出路径**:后端构建产物路径模式 (默认: target/*.jar,统一使用Unix格式的正斜杠) - **编译命令**:自定义构建命令,每行一个 ### 5. 测试和部署 1. 点击 "测试连接" 验证服务器连接 2. 保存项目配置 3. 在项目列表中点击 "部署" 按钮 4. 查看实时部署进度和日志 ## 📁 项目结构 ```bash deploy-app/ ├── gui_deploy_app.py # GUI主程序 ├── deploy_kit.py # 部署核心模块 ├── requirements.txt # 依赖包列表 ├── README.md # 项目说明 ├── gui_deploy_app.spec # PyInstaller配置文件 ├── conf/ # 配置文件目录 │ ├── config.yaml # 示例配置文件 │ └── config_key.yaml # 加密配置示例 ├── data/ # 数据目录 │ ├── .key # 加密密钥 │ └── projects.json # 项目配置数据 ├── tests/ # 测试文件目录 │ ├── __init__.py # 测试包初始化 │ ├── test_auto_backend_path.py # 后端路径自动检测测试 │ ├── test_gui.py # GUI功能测试 │ ├── test_output_config.py # 输出配置测试 │ ├── test_path_format.py # 路径格式测试 │ └── test_selective_deploy.py # 选择性部署测试 ├── scripts/ # 脚本文件目录 │ ├── build.py # 构建脚本 │ ├── build_exe.bat # Windows构建批处理 │ ├── run_gui.bat # GUI启动批处理 │ └── start.bat # 快速启动批处理 ├── docs/ # 文档目录 │ └── deploy_scripts_examples.md # 部署脚本示例 ├── examples/ # 示例文件目录 │ └── example_project.json # 项目配置示例 ├── logs/ # 日志文件目录 │ ├── deploy.log # 部署日志 │ └── gui_deploy.log # GUI日志 └── build/ # 构建输出目录 ``` ## 🔧 配置文件说明 项目配置以JSON格式存储在 `data/projects.json` 文件中,包含以下主要字段: - `name`: 项目名称 - `enabled`: 是否启用 - `server`: 服务器连接信息 - `deploy`: 部署配置信息 - `build`: 编译配置信息 - `frontend_output_dir`: 前端构建产物目录 - `backend_output_pattern`: 后端构建产物路径模式 - `created_at`: 创建时间 - `updated_at`: 更新时间 ### 输出路径配置示例 **前端项目输出目录配置:** - Vue.js: `dist` - React: `build` - Angular: `dist/my-app` - Next.js: `out` - Nuxt.js: `.output/public` **后端项目输出路径模式:** - Maven: `target/*.jar` - Gradle: `build/libs/*.jar` - 多模块Maven: `module-name/target/*.jar` - 带版本号: `target/app-*-SNAPSHOT.jar` - 自定义路径: `build/distributions/*.tar.gz` ### 后端输出路径 后端输出路径模式支持通配符,统一使用Unix格式的正斜杠: - `target/项目名.jar` - 指定具体的jar文件 - `target/*.jar` - 匹配target目录下的所有jar文件 - `build/libs/*.jar` - Gradle项目的输出路径 系统会自动将路径中的反斜杠转换为正斜杠,确保跨平台兼容性。 ### 选择性部署 在项目配置的"编译信息"标签页中,可以选择部署选项: - **部署前端**: 勾选后会构建和部署前端项目 - **部署后端**: 勾选后会构建和部署后端项目 - 可以同时选择两者,也可以只选择其中一个 - 项目卡片会显示当前选择的部署选项 使用场景: - 只修改了前端代码,只需部署前端 - 只修改了后端代码,只需部署后端 - 前后端都有修改,选择全部部署 ### 项目配置格式 项目配置以JSON格式存储在 `data/projects.json` 中: ```json { "name": "项目名称", "enabled": true, "server": { "hostname": "192.168.1.100", "port": 22, "username": "user", "password": "加密后的密码", "auth_type": "密码", "key_path": "" }, "deploy": { "frontend_deploy_dir": "/home/user/www", "frontend_deploy_script": "/home/user/www/deploy.sh", "backend_deploy_dir": "/home/user/server", "backend_deploy_script": "/home/user/server/deploy.sh" }, "build": { "java_dir": "", "frontend_dir": "C:/projects/frontend", "backend_dir": "C:/projects/backend", "frontend_commands": ["npm install", "npm run build"], "backend_commands": ["mvn clean package -DskipTests"] } } ``` ### 部署脚本示例 **前端部署脚本** (`deploy.sh`): ```bash #!/bin/bash cd /home/user/www unzip -o dist.zip rm -f dist.zip sudo systemctl reload nginx echo "前端部署完成" ``` **后端部署脚本** (`deploy.sh`): ```bash #!/bin/bash cd /home/user/server sudo systemctl stop myapp cp build/*.jar myapp.jar sudo systemctl start myapp echo "后端部署完成" ``` ## 🔒 安全特性 - **密码加密**:所有密码使用Fernet对称加密存储 - **密钥管理**:加密密钥自动生成并安全存储 - **SSH安全**:支持证书认证,避免密码传输 - **权限检查**:自动检查证书文件权限 ## 📝 日志文件 - `gui_deploy.log`:GUI操作日志 - `deploy.log`:部署过程日志 ## 🐛 故障排除 ### 常见问题 1. **连接服务器失败** - 检查IP地址和端口是否正确 - 确认服务器SSH服务已启动 - 验证用户名和密码/证书 2. **构建失败** - 检查本地项目路径是否正确 - 确认构建命令是否有效 - 查看构建日志中的错误信息 3. **部署脚本执行失败** - 确认脚本文件存在且有执行权限 - 检查脚本中的路径和命令 - 查看部署日志中的详细错误 4. **EXE打包失败** - 确认已安装所有依赖包 - 检查Python版本是否兼容 - 查看构建过程中的错误信息 ### 调试模式 如需调试,可以修改日志级别: ```python logging.basicConfig(level=logging.DEBUG) ``` ## 🔄 版本历史 ### v1.0 (当前版本) - ✅ 基础GUI界面 - ✅ 项目管理功能 - ✅ 自动部署功能 - ✅ 安全存储 - ✅ EXE打包支持 ## 🤝 贡献指南 1. Fork 项目 2. 创建功能分支 3. 提交更改 4. 推送到分支 5. 创建 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 📞 支持 如有问题或建议,请: - 创建 Issue - 发送邮件 - 查看文档 --- **注意**:首次运行时,应用程序会自动创建必要的目录和配置文件。请确保有足够的文件系统权限。