We use CruiseControl.net with a few custom Ruby scripts carrying out more extensive and custom behaviour at the end of every build.
Currently these are based on the 1.3 version of CC.Net, but with the advent of 1.4 a lot more can be done with the base system and with anything hanging off it.
I wrote a few blog posts on our CI process which might be of interest.