Continuous Integration with Cerberus
At Elevated Rails, we do a lot of testing. We’re very careful to make sure our tests are always passing. Without fail, I manage to break the build right before I get on an airplane and nobody notices until I’m in the air. Read on to see what we’ve done to prevent this.
Enter Cerberus. Cerberus is a ruby continuous build tool that will look for checkins, update the code and run tests. It does a great job of emailing you when something breaks, but it doesn't keep emailing you every few minutes. It will give you updates on every checkin until the build is fixed. It's already caught several breakages in the first week we've used it.
While this isn't sexy code, it helps keep us running. Most importantly, it's a nice reminder for those times where you forget to add a file to svn. I would tell you how to set it up, but the existing tutorials are great. Instead, I'll give you my quick contribution.
We don't keep our database.yml files in svn, so we need a way to get them updated when a build is done. We use the rake builder, so our configuration looks like:
builder:
rake:
task: client:setup migrate test spec
The client:setup task is quite simple. It is simply:
namespace :client do desc 'Setup database.yml' task :setup do system("cp ~/.app/database.yml #{RAILS_ROOT}/config/database.yml") end end
That's it! Now if you'll excuse me, I have a flight to catch knowing that my build is safe.
Posted by Mike Mangino on Tuesday, January 09, 2007