Showing posts with label TeamCity. Show all posts
Showing posts with label TeamCity. Show all posts

Wednesday, March 19, 2008

TeamCity Rocks!

I checked in a few source files I'd been working on as I left work tonight. I didn't bother syncing with version control, running the unit tests, or even building the project. Hey, we have a continuous integration server, what could possibly go wrong? If you're anything like I was, right now you're screaming, “Dude, {CruiseControl, AntHill, Hudson} is going to fail and you're going to spam me with build failures all night!”


No, no I'm not. See TeamCity is different. And different is better. Build failure spam? No more. Waiting for a success message before going home? Nope. Lengthy clean and full rebuilds before checking in? Thing of the past. Can't compile because you synced just after someone else checked in garbage? Never again.


Here's the architecture of traditional Continuous Integration products:

You submit your code to version control, then CI pulls the source from version control, builds, tests, and sends out the success failure message. Traditional CI products don't claim to keep version control clean and error-free, they just claim that you'll know about it when it happens.


Here's the architecture of TeamCity:

You submit your code to the CI server, it merges your new files into the existing source, builds, tests, and only checks the files into version control if they are clean and error-free. Version Control can no longer become corrupted. Submitting garbage to the build server won't effect any of your teammates; they'll never see your bad files. No one will ever be spammed with build failures because TeamCity won't let version control ever lose integrity*.


What do you do when you check in? Sync, clean, build, test, and then submit, right? How long does that take? 15 minutes, 30 minutes? Why don't we just let the CI server do that for us. Having TeamCity do this for me is saving at least 15 minutes a day. That's a 3% increase in performance from just switching to a different CI server. I think in 5 years we'll look back at these “traditional” CI products and consider their architecture naïve. TeamCity is simply doing CI the way it should have been done in the first place.


And the best part is that I'll never again have to call my wife after 5 PM and say, “I can't come home yet I have to wait for my build success message.”


* In practice, there are still occasional build failures because nothing stops an eager developer from checking in files through their version control client. Damn those command line users! (Of which I am one)