Hi Igniters,

I've built a small tool that answers one question about a pull request:
which test failures are actually caused by the change, and which were
already broken or flaky before it.

  https://ignite-pr-checker.is-a.dev

What it does:

* Analyses the PR's latest RunAll on TeamCity (ci2) and splits the failed
  tests into:
  - blockers: fail consistently in the branch's recent runs and never fail
    in the last ~100 master runs — attributed to the PR;
  - recently started failing: a fresh break to watch, not yet steady;
  - filtered noise: pre-existing on master or flapping on the same code.
* Shows suites that didn't produce a reliable run (compilation, execution
  timeout, OOM, interrupted chain) separately instead of mining them for
  bogus failures.
* Verdicts update live while a RunAll is still running — failures of
  already-finished suites are folded in, no need to wait ~4h for the chain.
* Groups blockers by root cause (one broken thing often shows up as dozens
  of failing tests), with pass/fail history strips per test.
* Can trigger RunAll / re-run individual suites or whole sections right
  from the page, and post the verdict ("visa") as a comment to the
  IGNITE ticket — manually, once on run completion, or automatically for
  every run you trigger (opt-in).
* A "flaky tests" page keeps a fix-master queue: tests currently failing
  on master, ranked by fail rate, linked to the failing master runs.

How it relates to the TC Bot: same core idea, and on identical builds the
verdicts match the bot's. The differences are that it watches all open PRs
continuously (no per-request visa needed), reads TeamCity on the fly with
no database, and anchors every verdict to the newest finished run.

Login is your own ci2 access token; it stays encrypted in your session
cookie and is never stored server-side. Everything runs under your account.

Source (Apache-2.0): https://github.com/anton-vinogradov/ignite-pr-checker

The tool is young and I'd really appreciate feedback — issues, discussions
in the repo, or just a reply here. If you find a case where the verdict is
wrong or confusing, that's exactly what I want to hear about.

Thanks,
Anton

Reply via email to