Upstream CI green
CI must be green for every supported target; a locally passing patch that breaks bots is not ready.
CI is a configuration matrix, not your machine
Pre-merge CI builds and tests configurations you do not have: other host targets, other backends, assertions on, sanitizers on. The failures that catch a locally green patch are the ones about assumptions you never noticed. A test that binds a riscv triple needs REQUIRES: riscv-registered-target. A test that assumes x86 needs the corresponding guard. A test that assumes a default VLEN needs to stop assuming it.
Read to the first error
A failing build produces a cascade, and the summary describes the last symptom. Reproduce with the same configuration: the same -DLLVM_TARGETS_TO_BUILD, assertions enabled, the same backend list for a compiler project. Then read the log upward until the first line that is wrong rather than caused.
Re-run once, then file
A single retry separates a flake from a break. If it reproduces, treat it as a real failure even when it is not yours: a flaky test in the suite will fail your pull request again in review. Do not disable a test to get green, and use XFAIL only with a linked issue and a plan for it.
Keep the branch stable during a run
Force-pushing while checks run produces results for a commit that no longer exists, and the green tick may belong to the previous revision. Push, wait for the run, read it.
Things that break
A green tick from a lite configuration that never built your target. A REQUIRES line added to hide a genuine failure on another target rather than to describe a missing tool. A test disabled to clear the queue, which removes the regression evidence you just created. And a stale run read as current.
Sources
- LLVM Testing Infrastructure Guidedocs · LLVM 23
- GitHub Actions documentationdocs
- Contributing to IREEdocs
A version records the documentation the claim was checked against, not a house pin. Confirm flags with --help on the release you installed.
Check yourself
A test passes locally and fails on one bot. What is the likely cause?
What should you do with a test that fails only in one configuration?
Why read the log to the first error rather than the summary?