The difference between continuous Integration tools and automated build tools

Lots of people have a common misunderstanding of the (subtle) differences between the various tooling regarding continuous integration and build automateion. Here’s the gist of it:

Build automation:

Build automation tools are tools you use to automate the build process, instead of doing it manually. Build automation tools include:

  • batch files
  • MSBuild files (csproj and vbproj files are really msbuild files inside, for example)
  • NAnt files
  • FinalBuilder (slick, visual editor, hundreds of built in tasks)
  • VisualBuild (slick, visual editor)
  • Rake (based on Ruby)
  • BooBS (Boo Build System)

 

Continuous Integration:

CI tools are the triggers that listen to various “events’ in the network (a check-in to source control, for example could be a trigger. You can configure these tools to do a few simple things when an event happens. One of those things can be to invoke one of the tools in the previous list. Some of the CI tools, though, include a few simple built in build atomation power (such as built in MSBuild support, or running tests) but you would do much better choosing a CI tool that invokes a build automation power tool, since each are design with different goals in mind.

CI tools include:

  • TeamCity (recommended 0 invokes msbuild, command line, tests, and more)
  • Team System Build server (invokes MSBuild files)
  • Hudson (mosty used in Java contexts but I hear some .net devs use it too)
  • CruiseControl.NET (xml based – very mature but also old fashioned..)
  • others..?

What should you use?

I really like to take the best of each category. I’ve found the combination of using TeamCity to listen and configure events which then triggers a FinalBuilder script file as an ultimate combination of both power and (very important!) maintainability and understandability of the process.

I really despise tools that force you to configure huge xml files (msBuild, CCNet, NAnt) as that is a maintainability nightmare waiting to happen.

Published Thursday, January 14, 2010 2:08 PM by RoyOsherove
Filed under: ,

Comments

Thursday, January 14, 2010 2:22 PM by Chris Brandsma

# re: The difference between continuous Integration tools and automated build tools

I thought BooBS as renamed to Bake?

That said, I do like the original (slightly sexist) name better.

Thursday, January 14, 2010 3:06 PM by Michael Warkentin

# re: The difference between continuous Integration tools and automated build tools

Another one that we use is Atlassian's Bamboo.  It has some nice integration with their Confluence (wiki) and JIRA (issue tracking) tools.

Thursday, January 14, 2010 3:20 PM by Marius

# re: The difference between continuous Integration tools and automated build tools

We use FinalBuilder Server at is pretty simple and effective.

Best from France,

Marius

Thursday, January 14, 2010 3:50 PM by Robin Clowers

# re: The difference between continuous Integration tools and automated build tools

I personally like to user psake (code.google.com/.../psake), a powershell build automation tool.  It is still pretty immature, but I really like it since powershell is both a scripting language and a great shell, making deployment tasks easier.

Thursday, January 14, 2010 4:02 PM by Gamlor

# re: The difference between continuous Integration tools and automated build tools

I'm using TeamCity in combination with MSBuild.

TeamCity because it runs both nicely, my Java-Maven-Build and my .NET-MSBuild's.

MSBuild because Visual Studio uses it. Therefore we maintain only a very small part manually.

Thursday, January 14, 2010 4:21 PM by Sean Kearon

# re: The difference between continuous Integration tools and automated build tools

FinalBuilder is a _the_ killer build app.  I use it in work with TFS as the CI engine and outside of work as standalone on my home dev PC.  It absolutely rocks and makes light work of tasks that would be painful using XML-hell tools like NAnt & MS Build.  Couldn't build without it!  

Would like to hear more about integrating FinalBuilder with TeamCity too!

Thursday, January 14, 2010 4:21 PM by Carlos Peix

# re: The difference between continuous Integration tools and automated build tools

I would say that most people does continuous BUILDS and call that continuous INTEGRATION, which is the former adding some kind of integration testing.

Anyway, if a team does continuous build is a lot of steps ahead of the ugly "developer machine Visual Studio build and publish".

Thanks

# The difference between continuous Integration tools and automated build tools – ISerializable – Roy Osherove's Blog

Pingback from  The difference between continuous Integration tools and automated build tools – ISerializable – Roy Osherove's Blog

Thursday, January 14, 2010 5:54 PM by Tom

# re: The difference between continuous Integration tools and automated build tools

Don't forget PowerShell as an automate tool. It can create IIS website, deploy an exe in a virtual machine and what not

Thursday, January 14, 2010 6:13 PM by Brian

# re: The difference between continuous Integration tools and automated build tools

Using Team System with Nunit Tests.

My project is setup with Team System and we have Nunit tests. How can I get a CI build to run the tests?

Are there integration points with TS Test Suite?

Code coverage etc?

Thursday, January 14, 2010 6:29 PM by Natural Cause

# re: The difference between continuous Integration tools and automated build tools

:) Thanks a lot Roy for clearing that up for me.

<3

Like Sean, I would be keen to hear more about TeamCity and FinalBuilder.

Thursday, January 14, 2010 9:23 PM by MattyT

# re: The difference between continuous Integration tools and automated build tools

I use Hudson and can attest that we happily it for building C++ and C# projects.

We used to use CC.NET but are progressively moving away from it towards Hudson.  The configuration is much nicer and the community is significantly more active.  

Highly recommended.  

# The difference between continuous Integration tools and automated &#8230; Mobile

Pingback from  The difference between continuous Integration tools and automated &#8230; Mobile

Friday, January 15, 2010 7:04 AM by El Bruno

# re: The difference between continuous Integration tools and automated build tools

Cool tools recopilation ...  !!!

small question: why don't you add TFS to the CI list ?

regards

Friday, January 15, 2010 11:06 AM by Gian Maria

# re: The difference between continuous Integration tools and automated build tools

TFS Build in the next version (2010) uses Workflow Foundation. This has pro and cons, but if you does not like managing xml configuration file (msbuild, nant, etc), you can edit the build with graphical editor :).

I must admit that, when you get used to msbuild, nant, or other xml tool, graphical editors are not so welcome. Editing an xml file is really quick, and I tend to prefer using msbuild or nant.

Alk.

Friday, January 15, 2010 11:08 AM by Brian J. Sayatovic

# re: The difference between continuous Integration tools and automated build tools

I, too, have been using Hudson for our .NET projects.  While its community is heavily biased towards Java and Hudson itself is implemented in Java, because it was designed with the right level of abstraction and has a very extensible plugin architecture, it's .NET capabilities are pretty good and can only get better.  I'd hoping to see a ".NET users of Hudson" pop up somewhere to share knowledge.

Friday, January 15, 2010 12:41 PM by Bill Sorensen

# re: The difference between continuous Integration tools and automated build tools

While I agree with recommending TeamCity over CC.NET for ease of maintenance, I do think that maintainable, testable scripts can be written in NAnt. The designers put a lot of thought into that tool. It does have a learning curve, though.

Friday, January 15, 2010 12:58 PM by glaxaco

# re: The difference between continuous Integration tools and automated build tools

Under build automation tools, you should include Make, the granddaddy of them all. Or is this post just about .NET tooling?

Friday, January 15, 2010 2:04 PM by Daniel

# re: The difference between continuous Integration tools and automated build tools

One point of clarification: FinalBuilder is a build automation tool, but with some of the SKUs, you get FinalBuilder Server, which is a continuous integration server (it has time and source control triggers).

We use and love both!

Saturday, January 16, 2010 12:22 AM by Sean Feldman

# re: The difference between continuous Integration tools and automated build tools

We are a .NET shop and use Hudson. Not only it's a simple and great tool, but also looks like highly customizable and extensible for everything we wanted to implement so far.

# The difference between continuous Integration tools and automated build tools &#8211; ISerializable &#8211; Roy Osherove&#8217;s Blog | LieberLieber Software TeamBlog

Pingback from  The difference between continuous Integration tools and automated build tools &#8211; ISerializable &#8211; Roy Osherove&#8217;s Blog | LieberLieber Software TeamBlog

Thursday, January 21, 2010 5:06 PM by ISerializable - Roy Osherove's Blog

# 18 Questions to ask yourself when choosing continuous integration and build automation tools

In a previous post I explained the different between Continuous Integration tools and Build automation

# 18 Questions to ask yourself when choosing continuous integration and build automation tools | I love .NET!

Pingback from  18 Questions to ask yourself when choosing continuous  integration and build automation tools | I love .NET!

# How intuitive and usable is it? &#8211; 18 Questions to&#8230;. #integration #automation &laquo; my mcLife

Pingback from  How intuitive and usable is it?  &#8211; 18 Questions to&#8230;.  #integration #automation &laquo; my mcLife

Friday, January 22, 2010 4:48 AM by 18 Continuous Integration Questions

# 18 Continuous Integration Questions

Pingback from  18 Continuous Integration Questions

Monday, January 25, 2010 4:13 AM by MSBuild – the voyage of the noob « idisposable.co.uk

# MSBuild &ndash; the voyage of the noob &laquo; idisposable.co.uk

Pingback from  MSBuild &ndash; the voyage of the noob &laquo;  idisposable.co.uk