My Secret Life as a Spaghetti Coder
home | about | contact | privacy statement | getting started with cfrails
TeamCity is a build server from JetBrains that I'm starting to like. It checks your code out, builds it, and runs your unit tests against the compiled source code (among other things), continuously integrating your code each time someone checks-in a change to the repository (or on-demand, if you'd like). Oh, and it's a bit faster than CruiseControl as well (At least for me).

It's free for many applications - those where you won't use more than 20 user accounts, 20 build configurations, 3 build agents, and don't need anything more than the standard web-based authentication interface. (A build configuration is a way of building using a build agent - e.g., you could build based on a .NET solution file, ANT file, or many other ways. A build agent appears to be the computer itself, though I'm not sure of that yet.)

In any case, there is an "enterprise" license that costs a couple of thousand dollars to get you around most of those limitations. The only exception is the limitation to three build agents - you can buy extra licenses for that at $299 a pop. I can't foresee the need for even two, but that might be because I have yet to see all the functions they serve.

Anyway, if you've been paying attention at least partially, you'll know I'm a huge fan of the DRY principle, especially as it relates to source code. In that case, you wouldn't be surprised to learn that one of my favorite features is this:

Screen capture showing TeamCity's code duplication detection

I haven't yet found a way to make the build fail for duplication, but seeing the reports is nice. I was also a bit disappointed it didn't catch code like this:

public int add(int x, int y) { return x+y; }
public int anotherAdd(int z, int a) { return z+a; }

But, it's nice to know it will at least catch copy-and-paste reuse.

I was set up and running my duplication checks in a few minutes, but finding everything you need is not as painless (setup is mostly painless, finding reasons for build failure and editing is not as easy). It's not hard, by any stretch of the imagination, but they set such a high standard on the "add" part that even the minor annoyances I encountered on the rest seemed large. A lot of that is being new not just to the technology, but some of the terminology they used as well.

Anyway, I've not dived in deep enough to see how or if it might work for other languages or platforms, but if you're using Java or .NET, I'd recommend you give it a try.

Hey! Why don't you make your life easier and subscribe to the full post or short blurb RSS feed? I'm so confident you'll love my smelly pasta plate wisdom that I'm offering a no-strings-attached, lifetime money back guarantee!


Comments
Leave a comment

This is really nice. I have always been trying to find a good CI tool that is easy for newcomers. Have you tried TeamCity with C/C++ environment? Can you comment on how easy it is to integrate this into an existing project?

Posted by Dat Chu on Mar 12, 2008 at 09:27 AM UTC - 5 hrs

Dat,

It's built with support for .NET and Java projects, but there is a build runner for "Command Line" that would (I presume) be able to run a build for C++.

That said, I don't know how you'd be able to tell it if a build failed or passed, and if it failed, the reason why - but as noted, I haven't looked past the fact that it has a command line runner available.

What would be really cool is if they publish an API to be able to add your own build runners that would integrate just like a normal one - where you get all the stats, tests passing, etc.

As far as setting it up with an existing projects: I found it quite easy, as that's exactly what I did when setting it up for the first time. As long as you've got your source code in SVN, CVS, Perforce or some other compatible version control system, it should check it out and go.

Posted by Sammy Larbi on Mar 12, 2008 at 09:55 AM UTC - 5 hrs

Is it some PR or you really haven't tried Hudson?

Posted by alex on Mar 13, 2008 at 08:39 AM UTC - 5 hrs

I hadn't even heard of Hudson until you mentioned it. The list of plugins and the ability to write them certainly looks cool though. I may have to try it out!

Posted by Sammy Larbi on Mar 13, 2008 at 09:35 AM UTC - 5 hrs

Hudson can do all the features that you described in the post and lot more. No strings attached, it is free. I'm a big fan of Hudson.

Posted by Surya Suravarapu on Mar 13, 2008 at 09:54 AM UTC - 5 hrs

Cool - I'll certainly give it a try!

Posted by Sammy Larbi on Mar 13, 2008 at 09:59 AM UTC - 5 hrs

TeamCity does provide the facility for writing extensions. See: http://www.jetbrains.com/teamcity/features/extensi...

and

http://www.jetbrains.net/confluence/display/TCD3/D...

Posted by Dave Watkins on Mar 13, 2008 at 10:27 AM UTC - 5 hrs

@alex and Surya - thanks for giving me the heads up on Hudson.

@Dave - Thanks for those links. I looked for the same, but all I really found was plugin development, and the one I was reading looked more like plugins for IDEs to do things in TC remotely.

I guess I just browsed right over it. Unfortunately, I haven't found as much of a community for plugins as I would have expected after seeing it for IntelliJ IDEA (I didn't see any at all in a short search).

Hudson seems to have the upper hand there, but I haven't tried it yet, so I can't speak to performance or ease of use.

Posted by Sammy Larbi on Mar 13, 2008 at 01:55 PM UTC - 5 hrs

@Dat: TeamCity supports either command line runner, or direct msbuild solution/project file support for building in C++. Using command line, you could then just run make or nmake (if you are windows centric).

Posted by Andy at Simutronics on Apr 01, 2008 at 07:20 AM UTC - 5 hrs

Leave a comment

Leave this field empty
Your Name
Email (not displayed, more info?)
Website

Comment:

Subcribe to this comment thread
Remember my details
Google
Web CodeOdor.com

Me
Picture of me

Topics
.NET (24)
AI/Machine Learning (13)
Bioinformatics (2)
C++ (6)
cfrails (22)
ColdFusion (83)
Customer Relations (20)
DRY (19)
DSLs (13)
Future Tech (6)
Games (6)
Groovy/Grails (7)
IDEs (9)
Java (43)
JavaScript (3)
Lisp (1)
Mac OS (1)
Management (3)
Miscellany (61)
OOAD (38)
Programming (123)
Programming Quotables (8)
Rails (19)
Ruby (54)
Save Your Job (62)
scriptaGulous (4)
Software Development Process (26)
TDD (42)
TDDing xorblog (6)
Tools (4)
Web Development (5)
YAGNI (11)

Resources
Agile Manifesto & Principles
Principles Of OOD
ColdFusion
CFUnit
Ruby
Ruby on Rails
JUnit



RSS 2.0: Full Post | Short Blurb
Subscribe by email:

Delivered by FeedBurner