# 自动部署功能更新日志 ## 版本:2026-01-07 ### 新增功能 #### 1. 自动部署到生产服务器 - 任务完成后自动将脚本和工作流部署到生产服务器 192.168.3.143 - 支持 SSH 密码认证 - 自动创建远程目录 - 自动设置脚本执行权限 #### 2. 智能工作流文件查找 系统会自动查找并部署相关的 n8n 工作流文件: - 与脚本同目录的 `n8n_workflow_*.json` 文件 - `datafactory/n8n_workflows/` 目录下的工作流 - 根据任务名称匹配的工作流文件 #### 3. 新增命令行参数 | 参数 | 说明 | |------|------| | `--enable-deploy` | 启用自动部署(默认启用) | | `--no-deploy` | 禁用自动部署 | | `--deploy-now TASK_ID` | 立即部署指定任务 | | `--test-connection` | 测试 SSH 连接 | #### 4. 新增函数 - `get_ssh_connection()` - 建立 SSH 连接 - `test_ssh_connection()` - 测试连接 - `deploy_script_to_production()` - 部署脚本 - `deploy_n8n_workflow_to_production()` - 部署工作流 - `auto_deploy_completed_task()` - 自动部署任务 ### 修改内容 #### 1. 全局配置 新增生产服务器配置: ```python PRODUCTION_SERVER = { "host": "192.168.3.143", "port": 22, "username": "ubuntu", "password": "citumxl2357", "script_path": "/opt/dataops-platform/datafactory/scripts", "workflow_path": "/opt/dataops-platform/n8n/workflows", } ``` 新增全局变量: ```python ENABLE_AUTO_DEPLOY: bool = True # 默认启用自动部署 ``` #### 2. sync_completed_tasks_to_db() 函数 在任务同步到数据库后,自动调用部署功能: ```python # 自动部署到生产服务器(如果启用) if ENABLE_AUTO_DEPLOY: logger.info(f"🚀 开始自动部署任务 {task_id} 到生产服务器...") if auto_deploy_completed_task(t): logger.info(f"✅ 任务 {task_id} 已成功部署到生产服务器") else: logger.warning(f"⚠️ 任务 {task_id} 部署到生产服务器失败") ``` #### 3. main() 函数 新增命令处理逻辑: - 测试连接命令处理 - 立即部署命令处理 - 自动部署开关控制 ### 依赖要求 新增依赖: ``` paramiko>=2.7.0 # SSH 连接和文件传输 ``` 安装方式: ```bash pip install paramiko # 或 python scripts/install_deploy_deps.py ``` ### 使用示例 #### 基本使用 ```bash # 启动 Agent 循环模式(自动部署) python scripts/auto_execute_tasks.py --chat-loop --use-agent # 禁用自动部署 python scripts/auto_execute_tasks.py --chat-loop --use-agent --no-deploy ``` #### 测试和调试 ```bash # 测试 SSH 连接 python scripts/auto_execute_tasks.py --test-connection # 手动部署指定任务 python scripts/auto_execute_tasks.py --deploy-now 123 ``` ### 文件结构 ``` DataOps-platform-new/ ├── scripts/ │ ├── auto_execute_tasks.py # 主脚本(已更新) │ └── install_deploy_deps.py # 依赖安装脚本(新增) ├── docs/ │ ├── auto_deploy_guide.md # 详细使用指南(新增) │ ├── auto_deploy_quick_reference.md # 快速参考(新增) │ └── CHANGELOG_auto_deploy.md # 更新日志(本文件) └── tasks/ └── pending_tasks.json # 任务状态文件 ``` ### 部署流程 ``` ┌─────────────────┐ │ 任务完成检测 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 同步到数据库 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 建立 SSH 连接 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 上传 Python 脚本│ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 查找工作流文件 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 上传工作流文件 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 设置文件权限 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 部署完成 │ └─────────────────┘ ``` ### 安全说明 1. **密码存储**:当前密码明文存储在代码中,建议后续改用环境变量或密钥认证 2. **网络安全**:确保生产服务器仅在内网访问 3. **权限控制**:使用最小权限原则,定期审计部署日志 ### 已知限制 1. 仅支持单个生产服务器 2. 不支持自动回滚 3. 不支持部署历史记录 4. 密码明文存储 ### 未来计划 - [ ] 支持 SSH 密钥认证 - [ ] 支持多服务器部署 - [ ] 部署版本管理 - [ ] 自动回滚机制 - [ ] 部署通知功能 - [ ] 部署前后钩子脚本 ### 测试建议 1. 首次使用前运行 `--test-connection` 测试连接 2. 使用 `--deploy-now` 手动部署单个任务进行测试 3. 确认部署成功后再启用自动部署循环模式 4. 定期检查生产服务器上的文件和权限 ### 故障排查 详见:[auto_deploy_guide.md](./auto_deploy_guide.md#故障排查) ### 技术支持 如遇问题,请检查: 1. 网络连接是否正常 2. SSH 服务是否运行 3. 用户权限是否足够 4. paramiko 是否正确安装 5. 日志输出的错误信息 ### 贡献者 - 初始实现:2026-01-07 ### 许可证 与主项目保持一致