Wednesday, March 12, 2008

Painless CI?

I recently started a new project and had the fun task of getting the build server up and running. Usually, I dislike the entire process -- creating a nant script, configuring cruisecontrol... so much xml... so little fun!

Since its a new project, first order of business -- rake for builds! Something we experimented with at Oxygen, but didn't add to our practice. If you have the options of putting ruby on your build server, switch to rake if you are not already using it. Its easy to read, easy to build projects and you can reuse code. Such a nice change from the copy and paste nightmare of nant.

After spending 1/2 a day working on cruisecontrol.net and trying to figure out what configuration I needed, I realized -- hey, you can use cruisecontrol.rb -- ruby is already on the build server and we're using rake.

I'd post directions on the extra steps or setup I needed to do, but the directions from the cruisecontrol.rb site left me with a working build -- imagine that?

5 comments:

Tom said...

Its easy to read, easy to build projects and you can reuse code. Such a nice change from the copy and paste nightmare of nant.

I refuse to accept that I might have spent all that time twisting existing Nant instructions into what I need for nothing. This post makes me happysad.

Christopher Bennage said...

So do you have any recommended resources for using Rake? I'm new to Ruby (and I only "wrote" my first rakefile last week).

Kent Boogaart said...

Interesting approach Wendy,

Another road to painless CI that I use is to put your tooling execution into your build script (preferably MSBuild if you're using VS). This has a bunch of benefits:
- CI setup is simple: just run MSBuild against your build script and all the tooling will run too
- Devs can do a "full" build right from within VS
- You probably won't have the uncomfortable feeling that you've expended too much effort into your build server setup (backups can resolve this of course, but I'm not sure backing up build servers is common practice)

Of course, this doesn't alleviate the need for customizing your build script, but there are tools to help out with that if you prefer. Anyways, I blogged about all this here: http://kentb.blogspot.com/2008/02/fail-early-with-full-builds-from-within.html

wunda said...

Chris,

I'm pretty new to rake too, so I'm still looking for good resources myself. I find the rake docs to be very helpful. There are a bunch of articles on how you build and run tests .net from rake. Just google around :P

-Wendy

Kris said...

IronRuby is an example of a .Net project that is built and tested with rake.

http://ironruby.rubyforge.org/svn/trunk/Rakefile