360 Secure SkillHub
360 安全技能中心

CI Flake Triage

核心功能:读取JUnit XML(含重试产物),聚合测试状态,标记不稳定测试,区分顽固失败与不稳定失败,输出Top N待优化测试。典型场景:CI流水线中分析测试结果,协助优先处理不稳定测试。输入为可选环境变量(如指定XML路径、Top数量、输出格式等),输出支持文本/JSON,可配置发现问题时非零退出,适配CI集成需求。

daniellummis
daniellummis
热度 62.43
最近更新 2026-05-11 17:29:02
分类:数据依赖:代码执行 / 读写文件应用场景:数据处理 / 报告撰写 / DevOps

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add ci-flake-triage
Metadata
name
ci-flake-triage
description
Detect flaky tests from JUnit XML retries and emit a triage report with top unstable cases.
version
1.0.0
metadata
{"openclaw":{"requires":{"bins":["bash","python3"]}}}

CI Flake Triage

Use this skill to turn noisy JUnit retry artifacts into a focused flaky-test report.

What this skill does

  • Reads one or more JUnit XML files (for example: first run + rerun artifacts)
  • Aggregates status per test case (passed, failed, skipped, error)
  • Flags flaky candidates when a test has both fail-like and pass outcomes
  • Separates persistent failures from flaky failures
  • Prints top flaky tests to prioritize stabilization work

Inputs

Optional:

  • JUNIT_GLOB (default: test-results/**/*.xml)
  • TRIAGE_TOP (default: 20)
  • OUTPUT_FORMAT (text or json, default: text)
  • FAIL_ON_PERSISTENT (0 or 1, default: 0) — exit non-zero when persistent failures exist
  • FAIL_ON_FLAKE (0 or 1, default: 0) — exit non-zero when flaky candidates exist

Run

Text report:

JUNIT_GLOB='artifacts/junit/**/*.xml' \
TRIAGE_TOP=15 \
bash skills/ci-flake-triage/scripts/triage-flakes.sh

JSON output for CI ingestion:

JUNIT_GLOB='artifacts/junit/**/*.xml' \
OUTPUT_FORMAT=json \
FAIL_ON_PERSISTENT=1 \
bash skills/ci-flake-triage/scripts/triage-flakes.sh

Run with bundled fixtures:

JUNIT_GLOB='skills/ci-flake-triage/fixtures/*.xml' \
bash skills/ci-flake-triage/scripts/triage-flakes.sh

Output contract

  • Exit 0 when no fail gates are enabled (default)
  • Exit 1 if FAIL_ON_PERSISTENT=1 and persistent failures are found
  • Exit 1 if FAIL_ON_FLAKE=1 and flaky candidates are found
  • In text mode, prints summary + top flaky + persistent failures
  • In json mode, prints machine-readable summary and testcase details