I've recently been working on a build framework using Ruby. Having been a .Net "build master" of sorts for the past few years I've stumbled across many build configurations and problems. And as much as I like being a build master, I want to make my job as easy as possible. Enter conventions! We apply them everywhere else in development, why not in our build scripts. With this in mind I set about creating a set of intelligent, convention-based (but overrideable should you really wish) rake tasks. I chose Ruby because I find it flexible and quick for writing tasks, and well suited as a build language. The BDD frameworks available make testing the tasks easy.
The project is called RakeOff, and is hosted on Bit Bucket:
The project is still quite young, so there may be the odd bug, and mistakes in the documentation. It is a relatively active project though, so I'm always working on improving it and fixing any issues. The wiki probably explains the framework best, but as a sample snippet here's what one of my typical build files now looks like:
$: << File.expand_path('build/src')
task :default => [:off, :clean, :configs, :compile, :unit_tests, :aspcompile, :copy]
desc 'Copy all required folders to _release'
task :copy => [:copy_scripts, :copy_images]
task :off do
robocopy(:copy_scripts, 'scripts/deploy', '_output/package/scripts/deploy', '')
robocopy(:copy_images, 'res/images', '_output/package/images', '')
Go check it out and feel free to give me any feedback!