From a42661abd5fbcf9c013a708ec4dbb32ed4e80e3f Mon Sep 17 00:00:00 2001 From: hukdoesn Date: Mon, 22 Sep 2025 21:29:32 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=9E=84=E5=BB=BA=E4=B8=AD=EF=BC=8C=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E5=8E=86=E5=8F=B2=E9=98=B6=E6=AE=B5=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/apps/views/build_history.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/backend/apps/views/build_history.py b/backend/apps/views/build_history.py index b6434a8..33d53c5 100644 --- a/backend/apps/views/build_history.py +++ b/backend/apps/views/build_history.py @@ -17,19 +17,21 @@ class BuildHistoryView(View): def _get_stage_status_from_log(self, log: str, stage_name: str, overall_status: str = None) -> str: """从日志中获取指定阶段的状态""" if not log: - return 'failed' + return 'pending' # 处理特殊阶段:Git Clone if stage_name == 'Git Clone': # Git Clone 阶段使用 [Git Clone] 格式 if '[Git Clone]' not in log: - return 'failed' + return 'pending' # 检查是否有完成标记 if '[Git Clone] 代码克隆完成' in log: return 'success' elif overall_status == 'terminated': return 'terminated' + elif overall_status in ['running', 'pending']: + return 'running' else: return 'failed' @@ -49,14 +51,19 @@ class BuildHistoryView(View): # 没有该阶段的日志,说明还没开始执行就被终止了 return 'terminated' + # 检查阶段是否开始执行 if stage_start_pattern not in log: - return 'failed' # 阶段未开始执行 + return 'pending' # 检查阶段是否完成 if stage_complete_pattern in log: return 'success' # 阶段成功完成 else: - return 'failed' # 阶段开始了但没有完成 + # 阶段已开始但还没完成,根据整体状态判断 + if overall_status in ['running', 'pending']: + return 'running' + else: + return 'failed' @method_decorator(jwt_auth_required) def get(self, request):