TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Martin Fowler's paper on Continuous Integration

9 pointsby mshafrirabout 15 years ago

1 comment

culixabout 15 years ago
It's interesting that he considers testing to be a normal part of CI - "Once I'm done I carry out an automated build on my development machine. Only if it all builds and tests without errors is the overall build considered to be good." I have worked on projects of 30+ programmers where the dev process was called "continuous integration", but what that meant was "check in your code as often as possible, regardless of if it works". There were no automated tests to check your code beforehand, and most programmers didn't even bother to see if their code compiled before adding changes to source control.<p>I have also worked on projects where we had a "preflight" process. This meant that all potential changes were uploaded to a build machine and tested with the head branch to see if they compiled. Only if they successfully compiled were the changes actually added to source control. This sounds a lot like what they call 'pending head' - <a href="http://martinfowler.com/bliki/PendingHead.html" rel="nofollow">http://martinfowler.com/bliki/PendingHead.html</a> . It's interesting that Fowler doesn't consider pending head/preflight a necessary part of CI or of good development; IME it dramatically cuts down on broken builds because it keeps developers honest. Didn't check to see if your code compiles? Too bad for you, it's not going in.<p>Fowler mentions several problems with CI builds still breaking. "One reason is discipline, people not doing an update and build before they commit". So maybe he would agree that preflight/pending head is beneficial. It also helps because you can go home on time - you don't have to stick around and babysit a build process if you commit code late in the day. That saves dev time <i>and</i> makes things progress faster.<p>Very good article; thanks for posting.