diff --git a/.github/workflows/woboq.yml b/.github/workflows/woboq.yml
index bdfbc8fef9c..1ef729af30a 100644
--- a/.github/workflows/woboq.yml
+++ b/.github/workflows/woboq.yml
@@ -12,6 +12,7 @@ jobs:
# don't use dockerhub push because this image updates so rarely
WoboqCodebrowser:
runs-on: [self-hosted, style-checker]
+ timeout-minutes: 420 # the task is pretty heavy, so there's an additional hour
steps:
- name: Set envs
run: |
diff --git a/tests/ci/codebrowser_check.py b/tests/ci/codebrowser_check.py
index 2dba5176c8b..a3414156bba 100644
--- a/tests/ci/codebrowser_check.py
+++ b/tests/ci/codebrowser_check.py
@@ -87,25 +87,37 @@ def main():
report_path = result_path / "html_report"
logging.info("Report path %s", report_path)
+
s3_path_prefix = "codebrowser"
+ index_template = (
+ f''
+ "{}"
+ )
+ additional_logs = [path.absolute() for path in result_path.glob("*.log")]
+ test_results = [
+ TestResult(
+ index_template.format("Generate codebrowser site"),
+ state,
+ stopwatch.duration_seconds,
+ additional_logs,
+ )
+ ]
+
if state == "success":
+ stopwatch.reset()
_ = s3_helper.fast_parallel_upload_dir(
report_path, s3_path_prefix, S3_TEST_REPORTS_BUCKET
)
-
- index_html = (
- f''
- "Generate codebrowser site"
- )
-
- additional_logs = [path.absolute() for path in result_path.glob("*.log")]
-
- test_results = [
- TestResult(index_html, state, stopwatch.duration_seconds, additional_logs)
- ]
+ test_results.append(
+ TestResult(
+ index_template.format("Upload codebrowser site"),
+ state,
+ stopwatch.duration_seconds,
+ )
+ )
# Check if the run log contains `FATAL Error:`, that means the code problem
- stopwatch = Stopwatch()
+ stopwatch.reset()
fatal_error = "FATAL Error:"
logging.info("Search for '%s' in %s", fatal_error, run_log_path)
with open(run_log_path, "r", encoding="utf-8") as rlfd:
diff --git a/tests/ci/stopwatch.py b/tests/ci/stopwatch.py
index 1ab6737530c..a63eb954a4d 100644
--- a/tests/ci/stopwatch.py
+++ b/tests/ci/stopwatch.py
@@ -5,8 +5,7 @@ import datetime
class Stopwatch:
def __init__(self):
- self.start_time = datetime.datetime.utcnow()
- self.start_time_str_value = self.start_time.strftime("%Y-%m-%d %H:%M:%S")
+ self.reset()
@property
def duration_seconds(self) -> float:
@@ -15,3 +14,7 @@ class Stopwatch:
@property
def start_time_str(self) -> str:
return self.start_time_str_value
+
+ def reset(self) -> None:
+ self.start_time = datetime.datetime.utcnow()
+ self.start_time_str_value = self.start_time.strftime("%Y-%m-%d %H:%M:%S")