In June I had the pleasure to do a review of the first German book about CI with Hudson by Simon Wiest. The book is announced for December 2010 and it will cover topics from basic (setup, first jobs) up to deep knowledge like writing plugins for Hudson.
As with earlier reviews I had printed the book (draft), read it and made comments on the side (and Simon had to listen to them for hours
But some comments weren’t for the author – they “just” ideas which came into my mind. But because I won’t have the time for implementing them, I’ll write about them …
Capability Plugin
The main idea is automatic dispatching of jobs to slaves according to their needs. If I remember right, TeamCity has this feature too …
The Slaves
The slaves have some capabilities. There are two kinds of them:
- automatic capabilities: result from tool configuration, operating system, jdk versions, build tool name+version, …
- manual capabilities: the admin of the slave can define key-value pairs
The Jobs
For jobs you define requirements according to the provided capabilities. And like them there are two requirements:
- automatic requirements: selected jdk, build tool, operating system (if you use e.g. a Windows Batch …)
- manual requirement: define additional requirements (or overwrite the complete formula). Use key=value (aspectj.available=true) or comparisons (ant.version >= 1.8) and combine them (and, or, xor, …)
Dispatcher strategy
The dispatcher must select all slaves which fit the defined requirements. From this list it selects the one by looking at the build queue of the slave (does it have time for building?) and net-response-time (don’t forget that much data has to be transfered …)
Not sure if there is something like this now ….
