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:
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!
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
@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