更新execute_jsite_task以匹配新版jsite.sh脚本
This commit is contained in:
parent
3bf7b65982
commit
7c8c96a894
@ -1886,8 +1886,46 @@ def get_jingrow_firewall_rules(**data):
|
|||||||
return {"success": False, "message": f"防火墙规则查询失败: {str(e)}"}
|
return {"success": False, "message": f"防火墙规则查询失败: {str(e)}"}
|
||||||
|
|
||||||
@jingrow.whitelist()
|
@jingrow.whitelist()
|
||||||
def execute_jsite_task(instance_id, site_name, git_repo, site_url, revalidate_token, jingrow_server_url, jingrow_api_key, jingrow_api_secret, region_id='cn-shanghai'):
|
def execute_jsite_task(instance_id, region_id, mode='deploy', **kwargs):
|
||||||
"""在实例上安装Jsite前端"""
|
"""在实例上执行Jsite任务
|
||||||
|
|
||||||
|
Args:
|
||||||
|
instance_id: 实例ID
|
||||||
|
region_id: 地域ID
|
||||||
|
mode: 任务模式,默认为'deploy'
|
||||||
|
**kwargs: 包含以下参数:
|
||||||
|
必需参数:
|
||||||
|
- site_name: 项目名称
|
||||||
|
|
||||||
|
可选参数:
|
||||||
|
- git_repo: Git仓库地址
|
||||||
|
- site_url: 网站URL
|
||||||
|
- revalidate_token: 重新验证令牌
|
||||||
|
- backend_server_url: 后端服务器URL
|
||||||
|
- backend_api_key: 后端API密钥
|
||||||
|
- backend_api_secret: 后端API密钥
|
||||||
|
- node_version: Node.js版本
|
||||||
|
- start_port: 起始端口
|
||||||
|
- port_increment: 端口增量
|
||||||
|
- skip_docker: 跳过Docker安装
|
||||||
|
- skip_traefik: 跳过Traefik安装
|
||||||
|
- skip_dependencies: 跳过依赖安装
|
||||||
|
- skip_pm2: 跳过PM2安装
|
||||||
|
- force_update: 强制更新所有文件
|
||||||
|
- public_ip: 公网IP地址
|
||||||
|
|
||||||
|
任务模式 (mode参数):
|
||||||
|
- deploy: 完整部署模式 (默认)
|
||||||
|
- create: 创建新网站
|
||||||
|
- delete: 删除网站
|
||||||
|
- build: 构建网站
|
||||||
|
- start: 启动网站
|
||||||
|
- stop: 停止网站
|
||||||
|
- restart: 重启网站
|
||||||
|
- status: 查看网站状态
|
||||||
|
- list: 列出所有网站
|
||||||
|
- logs: 查看网站日志
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
# 验证实例ID是否存在
|
# 验证实例ID是否存在
|
||||||
server = jingrow.get_pg("Jsite Server", {"instance_id": instance_id})
|
server = jingrow.get_pg("Jsite Server", {"instance_id": instance_id})
|
||||||
@ -1898,25 +1936,96 @@ def execute_jsite_task(instance_id, site_name, git_repo, site_url, revalidate_to
|
|||||||
if not region_id:
|
if not region_id:
|
||||||
region_id = server.region
|
region_id = server.region
|
||||||
|
|
||||||
# 构建命令内容
|
# 构建基础命令内容
|
||||||
command_content = 'curl -s -o /tmp/execute_jsite_task.sh https://cloud.jingrow.com//files/execute_jsite_task.sh && chmod +x /tmp/execute_jsite_task.sh && /tmp/execute_jsite_task.sh --site-name {{site_name}} --git-repo {{git_repo}} --site-url {{site_url}} --revalidate-token {{revalidate_token}} --server-url {{jingrow_server_url}} --api-key {{jingrow_api_key}} --api-secret {{jingrow_api_secret}}'
|
command_content = 'curl -s -o /tmp/jsite.sh http://git.jingrow.com:3000/shell/jshells/raw/branch/main/jsite.sh && chmod +x /tmp/jsite.sh && /tmp/jsite.sh'
|
||||||
|
|
||||||
# 构建参数
|
# 从kwargs中获取参数
|
||||||
parameters = {
|
site_name = kwargs.get('site_name')
|
||||||
'site_name': site_name,
|
git_repo = kwargs.get('git_repo')
|
||||||
'git_repo': git_repo,
|
site_url = kwargs.get('site_url')
|
||||||
'site_url': site_url,
|
revalidate_token = kwargs.get('revalidate_token')
|
||||||
'revalidate_token': revalidate_token,
|
backend_server_url = kwargs.get('backend_server_url')
|
||||||
'jingrow_server_url': jingrow_server_url,
|
backend_api_key = kwargs.get('backend_api_key')
|
||||||
'jingrow_api_key': jingrow_api_key,
|
backend_api_secret = kwargs.get('backend_api_secret')
|
||||||
'jingrow_api_secret': jingrow_api_secret
|
|
||||||
}
|
# 验证必要参数(只有site_name是必须的)
|
||||||
|
if not site_name:
|
||||||
|
return {"success": False, "message": "缺少必要的参数: site_name"}
|
||||||
|
|
||||||
|
# 构建基础参数(只包含存在的参数)
|
||||||
|
parameters = {'site_name': site_name, 'mode': mode}
|
||||||
|
|
||||||
|
# 只有当参数存在且不为空时才添加到parameters和命令中
|
||||||
|
if git_repo:
|
||||||
|
parameters['git_repo'] = git_repo
|
||||||
|
command_content += ' --git-repo {{git_repo}}'
|
||||||
|
|
||||||
|
if site_url:
|
||||||
|
parameters['site_url'] = site_url
|
||||||
|
command_content += ' --site-url {{site_url}}'
|
||||||
|
|
||||||
|
if revalidate_token:
|
||||||
|
parameters['revalidate_token'] = revalidate_token
|
||||||
|
command_content += ' --revalidate-token {{revalidate_token}}'
|
||||||
|
|
||||||
|
if backend_server_url:
|
||||||
|
parameters['backend_server_url'] = backend_server_url
|
||||||
|
command_content += ' --backend-server-url {{backend_server_url}}'
|
||||||
|
|
||||||
|
if backend_api_key:
|
||||||
|
parameters['backend_api_key'] = backend_api_key
|
||||||
|
command_content += ' --backend-api-key {{backend_api_key}}'
|
||||||
|
|
||||||
|
if backend_api_secret:
|
||||||
|
parameters['backend_api_secret'] = backend_api_secret
|
||||||
|
command_content += ' --backend-api-secret {{backend_api_secret}}'
|
||||||
|
|
||||||
|
# 添加可选参数
|
||||||
|
if 'node_version' in kwargs:
|
||||||
|
parameters['node_version'] = kwargs['node_version']
|
||||||
|
command_content += ' --node-version {{node_version}}'
|
||||||
|
|
||||||
|
if 'start_port' in kwargs:
|
||||||
|
parameters['start_port'] = kwargs['start_port']
|
||||||
|
command_content += ' --start-port {{start_port}}'
|
||||||
|
|
||||||
|
if 'port_increment' in kwargs:
|
||||||
|
parameters['port_increment'] = kwargs['port_increment']
|
||||||
|
command_content += ' --port-increment {{port_increment}}'
|
||||||
|
|
||||||
|
if kwargs.get('skip_docker', False):
|
||||||
|
command_content += ' --skip-docker'
|
||||||
|
|
||||||
|
if kwargs.get('skip_traefik', False):
|
||||||
|
command_content += ' --skip-traefik'
|
||||||
|
|
||||||
|
if kwargs.get('skip_dependencies', False):
|
||||||
|
command_content += ' --skip-dependencies'
|
||||||
|
|
||||||
|
if kwargs.get('skip_pm2', False):
|
||||||
|
command_content += ' --skip-pm2'
|
||||||
|
|
||||||
|
if kwargs.get('force_update', False):
|
||||||
|
command_content += ' --force-update'
|
||||||
|
|
||||||
|
if 'public_ip' in kwargs:
|
||||||
|
parameters['public_ip'] = kwargs['public_ip']
|
||||||
|
command_content += ' --public-ip {{public_ip}}'
|
||||||
|
|
||||||
|
# 添加site-name和mode到命令(这些是基础参数)
|
||||||
|
command_content += ' --site-name {{site_name}} --mode {{mode}}'
|
||||||
|
|
||||||
|
# 统一超时时间
|
||||||
|
timeout = 3600
|
||||||
|
|
||||||
|
# 命令名称直接使用mode值
|
||||||
|
command_name = mode
|
||||||
|
|
||||||
manager = _get_manager()
|
manager = _get_manager()
|
||||||
result = manager.run_command(instance_id, command_content, parameters, 'installJsite', region_id, 3600)
|
result = manager.run_command(instance_id, command_content, parameters, command_name, region_id, timeout)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
jingrow.log_error("安装Jsite失败", f"在实例 {instance_id} 上安装Jsite时发生错误: {str(e)}")
|
jingrow.log_error("执行Jsite任务失败", f"在实例 {instance_id} 上执行Jsite任务 {mode} 时发生错误: {str(e)}")
|
||||||
return {"success": False, "error": str(e), "message": "安装Jsite失败"}
|
return {"success": False, "error": str(e), "message": f"执行Jsite任务 {mode} 失败"}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user