Skip to content

Monthly Archives: March 2008

CruiseControl Enterprise Best Practices, Part 6: Scaling up

You just started out with Continuous Integration. You’re building your project in CruiseControl. Great. Now, it’s time you started to plan ahead. This post is about scaling up CruiseControl. The tool can scale up to many projects, but you have to know a few things. The very first thing to do is make sure that [...]

New, shiny Rake support in Team City

You couldn’t pay me to run CruiseControl.rb now. Oh wait. You probably could. Anyway, now that Team City has a ‘Rake Runner’, you can build your Ruby projects with Rake. It understands Test::Unit and Rspec test output as well. The runner gives you test timings, both for that build and a graph of timings in [...]

New colourized Logger for Nant

Update: It was of course Eric Liu who wrote the logger. Stephen Chu wrote this adjacent post about Rails. Sorry, Eric and Stephen. Thanks to the people who left comments pointing this out. I spent several years being sysadmin at one project. Possibly the most popular thing I ever did there was enable the Ant [...]

Ant Best Practices: Provide good help

This is the fourth post in my series of posts examining Eric M Burke’sTop 15 Ant Best Practices from December 2003. The last one I covered was ‘Prefer a single buildfile‘. Today’s is ‘Provide good help’. Eric starts by suggesting that you should make use of public targets to document the targets that you should [...]

My article on Refactoring Ant Builds is published

The Pragmatic Programmers have just published the first volume of the ThoughtWorks Anthology! My article on Refactoring in Ant is included: I distilled my experiences fixing broken Ant builds for ThoughtWorks into a collection of refactorings that can be applied to a crufty build. You can buy PDF or paper copies via the Prags, but [...]

renaming multiple files in Perforce with the help of Ruby

Half an hour ago, I had about 60 files that had the same irritating prefix to the filename. I wanted to drop the prefix so the reader could see the significant portion of the filename first. There is no way that I would rename that many files by hand and not mess one up. bad_path=/my_redundant_path/ [...]

Ant Best Practices: Prefer a single buildfile

This is the third post in my series about Eric M Burke’s Top 15 Ant Best Practices from December 2003. Today’s practice is “Prefer a single buildfile”. To paraphrase Eric, it’s easier to understand a single file rather than a clever hierarchy of files. Having presided over several multi-file builds, I’m only too aware that [...]

Ant Best Practices: Adopt consistent style

In my first post reviewing Eric Burke’s Ant Best Practices article from 2003, we looked at putting the build file at the root of the project tree. I had a bee in my bonnet about that one; and so I skipped Eric’s first point, which is to adopt a consistent style. The man had a [...]

Graphing your CruiseControl build times with Gruff

There had been some concern on my last project about build times. My erstwhile colleague Ben started graphing the builds on a sheet of paper and posting it in the kitchen so everybody in the team could see it. When the sheet fell of the wall and the cleaners threw it away, I knew it [...]

Antcall is evil

Antcall is evil. Trust me on this one. This Ant task will hurt you. Use Macrodef instead. A brief introduction to make Make is the daddy of Ant. It originally came from the Unix world but it has been ported to just about every computer system, as it’s the de facto way to build c [...]