Sponsors

Microsoft


TechWell

We have 2373 guests and 3 members online

Home CM Basics TeamCity Continuous Integration Server

TeamCity Continuous Integration Server

E-mail
Written by Bob Aiello   
Monday, 01 December 2008 15:54
dec08basicscitybig.jpgUse of Continuous Integration (CI) Servers has long been an accepted and highly regarded best practice. Most CI servers are configured to automatically attempt to build a release whenever users commit changes back to the repository. There is a lot of value in using CI servers, which give us an early warning whenever changes are checked into the repository that do not build cleanly. In CM Basics we usually strive to offer some quick tips and tricks, with the CM Journal being geared towards more in depth analysis. This includes our detailed product reviews. In this article I would like to mention a CI Server that I recently started investigating called TeamCity. I am still learning this tool so I actually wanted to just simply describe some of my thoughts when I am starting to take a look at a new product. So to be candid, I am not sure if TeamCity is a good product or not.
How do we approach taking our first look
Evaluating any tool requires that you outline your requirements and evaluation criteria before you get started. For a CI Server you need to know which technologies are supported including integration with popular development tools. TeamCity supports both C# on the Microsoft .net framework  and also Java. The product integrates with many other Source Code Management tools and common IDEs. Which requirements are important to you and your organization? You will want to outline them in a spreadsheet and rate them based upon your own hands-on evaluation.

Unique features  
TeamCity has a number of unusual features that could, with enough work, be implemented in other tools as well. For example, TeamCity has Pre-Tested Commits. That means that your build is kicked off BEFORE you actually commit the code to the Source Code Repository. This is not the way that most CI Servers (which kick off the build after the code is committed) work. Actually, I am not sure if I like this feature or not. Even if the code is not building, I still don't want a developer to lose his changes. The other side of this argument is that you never want developers to check in a build that has bugs and interrupt everyone else's work (e.g. breaking the build). I have seen this work (and not work so well) in both approaches.

Triggering the build
Many CI Servers allow you to request a build or automatically start a build when code is checked into the SCM repository. TeamCity also allows you to preschedule a build or have builds that depend upon another build completing successfully. I am also learning that there are some cool features to manage distributed builds (I will provide more detail on this as soon as I gotten a little further in my investigation).

Your turn - what would you add?
I mentioned that I am just getting started with TeamCity. I have also been taking a deep dive into C#, .net and MSBuild. I hope to get into ClickOnce deployment next. Now I am really hoping that you will drop me a line and share your experiences with any of the tools that I have mentioned in this article. I am always looking to get my colleagues involved with sharing best practices and their experiences with these and other CM related technologies! Towards that end please take a read through my colleagues Dilip's article on GIT which we are also publishing in this issue of CM Basics.

BTW - now it's your turn to share your own experiences and best practices. Drop me a line and we'll get you started and provide you all the editorial support that you need!


Bob Aiello is the Editor-in-Chief for CM Crossroads and an independent consultant specializing in Software Process Improvement including Software Configuration and Release Management. Mr. Aiello has over 25 years experience as a technical manager in several top NYC Financial Services firms where he had had company-wide responsibility for CM, often providing hands-on technical support for enterprise Source Code Management tools, SOX/Cobit compliance, build engineering, continuous integration and automated application deployment. Bob is a long standing member of the Steering Committee of the NYC Software Process Improvement Network (CitySPIN), where he serves as the chair of the CM SIG. Mr. Aiello holds a Masters in Industrial Psychology from NYU and a B.S. in Computer Science and Math from Hofstra University. You may contact Mr. Aiello at raiello@acm.org  or link with him at http://www.linkedin.com/in/bobaiello .

Trackback(0)

Comments (3)add comment

S Marjan said:

S Marjan
...
First of all, a TeamCity Forum would be great on CM Crossroads (although I am not volunteering as a moderator). Please, Bob, set it up if possible.

I am administering TeamCity for one of the projects in our organization, although it is used in two others. My experience is using TeamCity in conjunction with Subversion and Maven. With a good branching policy, I have found TeamCity build configurations easy to set up. So far it has been very reliable.

Logging and reporting could be improved. Sometimes, it is not easy to track down problems, the messages could be more detailed. Any registered user can start any build configuration, which is not good if you have tagging and release artifacts.

I am not a fan on "builds-on-checkin", but TeamCity has that as an option only. Users should always be able to check-in on their own branches. But that is not a defect of TeamCity, but rather of Subversion, which does not handle branching very well.

SM
 
December 09, 2008
Votes: +0

Bob Aiello said:

Bob Aiello
...
Edward,

good comments. I really appreciate your input on this. I am considering giving a little more coverage to this tool (I have been a huge fan of CruiseControl and the great people at Thoughtworks for a long time). If there is interest we could also add a TeamCity Forum to our site (hint I am looking for a moderator :-)

Take a look at Dilip's article on GIT in CM Basics. I'd really like to get more input on everyone's experience using TeamCity (and other CM tools of course...
 
December 04, 2008
Votes: +0

Edward Patterson said:

0
...
I have been using CruiseControl for the past four years at a growing software company. Since January we have switched over to Team City and have not looked back. With over 100 developers and 92 build configurations, Team City makes creating both ant and maven build projects simple. Also you can simply copy build setups an change them for new branches. The plugin to eclipse and Intellij give developers instant notification of build failures. We also have several members of QA that sign up and get notified of build failures and successes.

There are only two issue I have. Developers have to sign up to get notified of builds. I personally like how CruiseControl could map developer check ins to an email address to automatically email the developer when they have modified the source sode.

The second issue is that with over 90 build configurations the main page (which shows all the projects and build configs for each) take longer to load. It would be nice to drill down into the project / builds so the main page loads faster. I believe they are working on this for the 4.0 version.

Overall it is well worth the time saving in creating or copying configurations and the overall price.
smilies/smiley.gif
 
December 04, 2008
Votes: +2

Write comment

You must be logged in to post a comment. Please register if you do not have an account yet.

busy
Last Updated on Wednesday, 03 December 2008 01:29
 
509 Bandwidth Limit Exceeded

Bandwidth Limit Exceeded

The server is temporarily unable to service your request due to the site owner reaching his/her bandwidth limit. Please try again later.