Continuous Integration: Improving Software Quality and Reducing Risk (Martin Fowler Signature Books) |
| |
|
|
Author:
Paul M. Duvall,
Steve Matyas,
Andrew Glover
By Addison Wesley
Average Customer Rating:     
List Price: £31.99
Our Price: £19.32
|
|
|
|
Binding: Paperback Dewey Decimal Number: 005 EAN: 9780321336385 ISBN: 0321336380 Label: Addison Wesley Manufacturer: Addison Wesley Number Of Items: 1 Number Of Pages: 336 Publication Date: 2007-07-12 Publisher: Addison Wesley Studio: Addison Wesley |
|
|
|
    Covers all the major deployment and automation issues, 2007-08-11 Comment: Continuous Integration refers to the practice of automating the build, testing and deployment of your software, so that producing a finished executable (and the related artifacts) can be done at the touch of a button, and is ideally carried out several times a day.
If this seems like a nice to have feature of your own development, but less of a core practice when compared to version control and comprehensive tests (both of which are requirements for doing CI), this book does a pretty good job of advocating CI as being just as important.
First, the book introduces the core practices of CI (regular builds, tests, and deployment), then goes on to demonstrate how it facilitates other, more advanced practices, which gain value when automated, such as enforcing code style, and recording code metrics.
It does not assume any particular platform, although most of the code uses Java and C# (and associated XML configuration). As a result, it will appeal most to those who want general guidance about why CI is a good idea, what to put under CI, how often to integrate, how long to allow the build to take, what to do if builds are too slow, etc. There's clearly no one-size-fits-all answer to this and this not a step-by-step tutorial book, so you'll need to adapt the code samples given in this book for your own ends.
Therefore, if you're completely new to the idea of CI, then maybe you might want to check out Mike Clark's Pragmatic Project Automation first, which covers a lot of the same ground as the first part of this book, but goes into a lot more detail about the mechanics of using Ant and JUnit with Cruise Control.
Apart from being more language agnostic, what takes this book beyond the Pragmatic tome is the second part, which demonstrates the more advanced processes that CI makes possible: including a chapter on how to integrate databases into CI, which touches on some cultural issues (e.g. the DBA being separate from the rest of the coding team) and providing sandboxes for each developer. Additionally, there's material on how to include reporting and analysis, e.g. code duplication, code coverage and static analysis tools such as Java's FindBugs.
It's also a quick and easy read (less than 300 pages), while still having a pretty wide purview. I don't think this is a subject that would benefit from an enormous tome, and you'll still come away with a much clearer idea of your project's automation and scheduling needs, although you might have to do a bit of digging in online documentation of the various tools mentioned in the book to find your exact solution.
The only bad thing I have to say about this book is that there are some very brief developer dialogues sprinkled throughout, used as examples to highlight suboptimal practices. As ever, these are cringe-inducing and artificial.
Out of the core agile practices of unit testing, version control, and project automation, the latter has the least amount of material available to read. Fortunately, this is a readable, persuasive and helpful book for curing the big bang integration blues.
|