Testerbeast again
Since I started continuous integration process with my custom written tool, nicknamed TesterBeast, I’ve seen two other more generic frameworks aimed of doing the same thing. Both have way cooler names: CruiseControl and DamageControl and in typical environments probably operate way better also. Unfortunately typical does not means everywhere, and in my case they certainly don’t apply.
Both assume that you can make a clean checkout to a working folder the latest and greatest of the project and proceed with testing them. Now without diverging to fact that checkout has different meanings for every SCM, all this brakes down when you try to define latest. Not because it could not be defined accurately rather because in some workflows this just don’t work.
Rather than selecting all chekins that occurred till now, what if you (by workflow) where supposed to select only certain version tags marking change sets that satisfied certain workflow imposed criteria: like appropriate level of review, change request history and others. After this there is another problem of building config SCM specific config file (spec) that would select only and all versions that you need. Small things like two changesets that involve the same entity will influence the way how an ideal config spec should look like. That’s ClearCase and it’s quite heavy …
You cant say hey this workflow we are using makes it difficult for us to implement this shiny new thing with this shiny new tool ... and expect that things will change for the better. DeMarco puts this in Peopleware simply as: people hate change, they really do. Instead of making waves you must build your solution in a way that disturbs the least established status quo. At least partially for the beginning, as after merits of the new system are acknowledged willingness to change will increase also.
This is why I wrote my own little custom continuous integration tool, one that integrates perfectly with existing workflows and infrastructure and only does what it it supposed to do. That is no quite red/green ticklers in the system tray, without nifty messages being sent by SMS or over IRC, no changing red/green logos on custom nice looking webpages, and lastly no lamps either. Just a simple pool, select changes, build, test collect changed lint warnings, send an email, Ruby application.
