系统会自动查找并部署相关的 n8n 工作流文件:
n8n_workflow_*.json 文件datafactory/n8n_workflows/ 目录下的工作流| 参数 | 说明 |
|---|---|
--enable-deploy |
启用自动部署(默认启用) |
--no-deploy |
禁用自动部署 |
--deploy-now TASK_ID |
立即部署指定任务 |
--test-connection |
测试 SSH 连接 |
get_ssh_connection() - 建立 SSH 连接test_ssh_connection() - 测试连接deploy_script_to_production() - 部署脚本deploy_n8n_workflow_to_production() - 部署工作流auto_deploy_completed_task() - 自动部署任务新增生产服务器配置:
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 # 默认启用自动部署
在任务同步到数据库后,自动调用部署功能:
# 自动部署到生产服务器(如果启用)
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} 部署到生产服务器失败")
新增命令处理逻辑:
新增依赖:
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 脚本│
└────────┬────────┘
│
▼
┌─────────────────┐
│ 查找工作流文件 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 上传工作流文件 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 设置文件权限 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 部署完成 │
└─────────────────┘
--test-connection 测试连接--deploy-now 手动部署单个任务进行测试如遇问题,请检查:
与主项目保持一致