blog.philz.dev · 16d · discuss
Somebody is wrong on the internet. Today it’s my turn? CI, ideally, is a deterministic function from your source tree to a boolean: are the tests passing or not? In practice, it usually also returns some artifacts: logs, build outputs, structured per-test output. (The de-facto standard for "what tests ran" is a JUnit XML file.) Thrice in my career, I've attacked (or been attacked by) build or CI problems. When CI gets slow enough (or non-deterministic enough), you suddenly find a lot of time on your hands to fix CI. I’ve observed a few patterns. Goals # Faster is better....