[CI Monitor] Fix ci_monitor perf analyzer bug (#12281)

This commit is contained in:
Xiaoyu Zhang
2025-10-30 09:47:12 -07:00
committed by GitHub
parent 2cf3d0f89f
commit d8fcbaa38d
3 changed files with 27 additions and 25 deletions
+15 -19
View File
@@ -382,15 +382,13 @@ class SGLangCIAnalyzer:
try:
github_step_summary = os.environ.get("GITHUB_STEP_SUMMARY")
if not github_step_summary:
print("ℹ️ Not running in GitHub Actions, skipping summary generation")
print("Not running in GitHub Actions, skipping summary generation")
return
print("📊 Generating GitHub Actions summary for CI Analysis...")
print("Generating GitHub Actions summary for CI Analysis...")
summary_lines = []
summary_lines.append(
"# 🔍 SGLang CI Analysis Report (Target Workflows Only)"
)
summary_lines.append("# SGLang CI Analysis Report (Target Workflows Only)")
summary_lines.append("")
total = stats["total_runs"]
@@ -400,26 +398,24 @@ class SGLangCIAnalyzer:
skipped = stats["skipped_runs"]
success_rate = (success / total * 100) if total > 0 else 0
summary_lines.append("## 📊 Overall Statistics")
summary_lines.append("## Overall Statistics")
summary_lines.append("")
summary_lines.append("| Metric | Count | Percentage |")
summary_lines.append("|--------|-------|------------|")
summary_lines.append(f"| Total Runs | {total} | 100% |")
summary_lines.append(
f"| ✅ Successful | {success} | {success/total*100:.1f}% |"
f"| Successful | {success} | {success/total*100:.1f}% |"
)
summary_lines.append(f"| ❌ Failed | {failed} | {failed/total*100:.1f}% |")
summary_lines.append(f"| Failed | {failed} | {failed/total*100:.1f}% |")
summary_lines.append(
f"| 🚫 Cancelled | {cancelled} | {cancelled/total*100:.1f}% |"
)
summary_lines.append(
f"| ⏭️ Skipped | {skipped} | {skipped/total*100:.1f}% |"
f"| Cancelled | {cancelled} | {cancelled/total*100:.1f}% |"
)
summary_lines.append(f"| Skipped | {skipped} | {skipped/total*100:.1f}% |")
summary_lines.append(f"| **Success Rate** | **{success_rate:.1f}%** | - |")
summary_lines.append("")
if stats["category_failures"]:
summary_lines.append("## 📁 Category Failure Statistics")
summary_lines.append("## Category Failure Statistics")
summary_lines.append("")
summary_lines.append("| Category | Failures |")
summary_lines.append("|----------|----------|")
@@ -430,7 +426,7 @@ class SGLangCIAnalyzer:
summary_lines.append("")
if stats["job_failures"]:
summary_lines.append("## 🔴 Most Frequently Failed Jobs (Top 20)")
summary_lines.append("## Most Frequently Failed Jobs (Top 20)")
summary_lines.append("")
top_failures = sorted(
@@ -457,7 +453,7 @@ class SGLangCIAnalyzer:
pr_text = f" by {pr_info['author']}"
summary_lines.append(
f"✅ **Last Success:** [Run #{last_success['run_number']}]({last_success['url']}) ({success_date.strftime('%Y-%m-%d %H:%M')}){pr_text}"
f"**Last Success:** [Run #{last_success['run_number']}]({last_success['url']}) ({success_date.strftime('%Y-%m-%d %H:%M')}){pr_text}"
)
summary_lines.append("")
@@ -465,7 +461,7 @@ class SGLangCIAnalyzer:
job in stats["job_failure_links"]
and stats["job_failure_links"][job]
):
summary_lines.append("❌ **Recent Failures:**")
summary_lines.append("**Recent Failures:**")
for link_info in stats["job_failure_links"][job]:
created_at = datetime.fromisoformat(
link_info["created_at"].replace("Z", "+00:00")
@@ -484,7 +480,7 @@ class SGLangCIAnalyzer:
summary_lines.append("")
if stats["failure_patterns"]:
summary_lines.append("## 🔬 Failure Pattern Analysis")
summary_lines.append("## Failure Pattern Analysis")
summary_lines.append("")
summary_lines.append("| Pattern | Count |")
summary_lines.append("|---------|-------|")
@@ -498,10 +494,10 @@ class SGLangCIAnalyzer:
f.write("\n".join(summary_lines))
f.write("\n\n---\n\n")
print("✅ GitHub Actions summary generated successfully")
print("GitHub Actions summary generated successfully")
except Exception as e:
print(f"❌ Failed to generate GitHub Actions summary: {e}")
print(f"Failed to generate GitHub Actions summary: {e}")
def main():