Here are some of the ways I’ve seen a build killed during my years as an Eclipse committter.
1. Lightning. Ottawa has tremendous thunderstorms in the summer. What also happens during the early summer? Our coordinated release. One summer, a transformer next to our office was hit by lightning. Boom. No power for about 12 hours. Bye bye build.
2. Ice. The air conditioner in our lab filled with ice and ceased to function. The machines in our build lab then overheated and shut down.
3. Flood: Our lab’s air conditioner leaked the resulting water and flooded the lab. The build was relegated to a watery grave.
4. Random loss of power. A committer plugged in a space heater in her office which tripped a circuit breaker and killed the power in our build lab. Or the total and intermittent loss of power from the Ottawa Hydro. In the end, the results is the same: a dead build.
6. Permission issues: Permissions problems on the filesystem caused committing to the repository to fail. Or the signing process to time out. Or both.
7. Network timeouts aka no network love.
8. Human Error: The usual suspects compile errors, uncoordinated changes across projects, problems in builder itself, corrupted jars etc. have sent many builds to an early death.
Image © waferboard, http://www.flickr.com/photos/waferboard/5321533361/ licensed under Creative Commons by-nc-sa 2.0
10. Not respecting resource constraints. Consuming all the disk space, CPU, and bandwidth available is a fine way to finish off a build.
How your builds failed? Any exciting ways I’ve missed?