Review: Pragmatic Project Automation
One thing that we are trying to implement at work is automated builds. These would happen each night and would compile the code, run checkstyle against the code, and run all the unit tests. In order to help us set all of this up, I ordered the book Pragmatic Project Automation by Mike Clark. In it he outlines the various things that must be done in order to automate each and every part of the build, deploy, and release process. So far I am 5 chapters—out of a total of 6—into the book and am really enjoying it. If you are trying to do the samething then I highly recommend this book as a starting point.
The book is divided into 6 chapters. Each one looks at a different aspect of project automation. The first chapter offers an overview of the topic and presents a justification, in the form of a little story, for the reasons behind automating things like compiling, integration, and running unit tests. The argument presented is one of trust and safety and the fact that people, when presented with repetitive tasks, get bored and make mistakes. Whereas computers happily do the same thing over and over again without ever making a mistake or complaining.
Each chapter after presents a different aspect of a typical project that can be automated; automating the build process using Ant, creating hourly builds using CruiseControl, automating the release and update process, and finally, monitoring web servers in case of failure. A web project is used to tie all of these topics together.
The content of each chapter is short—the book is only 149 pages long—and only presents what is really needed to get up and running using the technology presented. For first time users, the chapter on Ant and CruiseControl alone make the book worth buying. They present everything the first time user needs to setup a build server and get their projects working with it. Including having the results emailed to staff where applicable.
However, this brevity of content is also a downfall. Unless you are using the exact tools presented in the book, you are going to have to go looking for more information. CVS, Java, Linux, and Ant are the main tools used and they are the only ones presented with examples. However, the merits of other tools such as Maven and AntHill are discussed in the book.
Overall this is an excellent resource that everyone working on real like development projects should read.