CHANGELOG_auto_deploy.md 5.7 KB

自动部署功能更新日志

版本: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. 全局配置

新增生产服务器配置:

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",
}

新增全局变量:

ENABLE_AUTO_DEPLOY: bool = True  # 默认启用自动部署

2. sync_completed_tasks_to_db() 函数

在任务同步到数据库后,自动调用部署功能:

# 自动部署到生产服务器(如果启用)
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 连接和文件传输

安装方式:

pip install paramiko
# 或
python scripts/install_deploy_deps.py

使用示例

基本使用

# 启动 Agent 循环模式(自动部署)
python scripts/auto_execute_tasks.py --chat-loop --use-agent

# 禁用自动部署
python scripts/auto_execute_tasks.py --chat-loop --use-agent --no-deploy

测试和调试

# 测试 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

技术支持

如遇问题,请检查:

  1. 网络连接是否正常
  2. SSH 服务是否运行
  3. 用户权限是否足够
  4. paramiko 是否正确安装
  5. 日志输出的错误信息

贡献者

  • 初始实现:2026-01-07

许可证

与主项目保持一致