Title: Continuous Integration in .NET
Authors: Marcin Kawalerowicz and Craig Bernts
Publisher: Manning Publications
E-book: 11 chapters of 12 (Early Access Edition)
How did I get this book? : I asked for a review copy.
Why did I read this book? : I’ve been involved in setting the build environment for my development team, and I’m an administrator for the source code control system (Team Foundation Server). My team works with a mix of C# and VB.NET projects. I’m also interested in technologies to enforce development standards and generate metrics.
"In software engineering, continuous integration (CI) implements continuous processes of applying quality control – small pieces of effort, applied frequently."
If you are still building your .NET code by hand and this is the first time you read about Continuous Integration, go buy this book. You have better things to do with your time, than repeat the same drone steps every day to build your code; and your customers deserve more quality than that.
If you have already set a build environment and believe that quality is important, go buy this book. You are sure to find new ideas to improve your process.
The book works as a complete tutorial on the subject for .NET developers. Even with time and space limitations, the authors have made a great effort to include all areas of CI. Every chapter is filled with examples using mainstream tools, covering both closed and open source alternatives. And while the book is heavy on tool coverage, it also has a good balance with processes and ideas that could be easily adapted to other existing or future tools.
If you don’t currently have a CI process, just follow and implement the first five chapters. You’ll end with a working process that includes source control, repeatable builds, centralized builds and feedback. After this, or if you already have an existing process, you can use the other chapters to improve the base process and improve build quality by automating other parts of your workflow, like unit tests and documentation.
I feel I can recommend this book to any .NET developer that cares about the quality of his job, and wants to work smarter, not harder. It works as stepping stone on establishing a solid engineering process for code building.
Quotes from the Book
"Your customer does not like risk. Your manager does not like risk. Your project manager should have plans in place to mitigate risk. In the end, you should not like risk either. Continuous Integration is all about reducing risk."
"Don’t let team objections get you down. The initial resistance will eventually give way to acceptance as the team works with the CI system."
"Can you easily update not only databases in your development and test environments, but also in production? Can you do this without causing data loss?"
It sets the ground on why CI is important, and how to achieve team/customer buyout. It also introduces the sample application that’s used on the other chapters.
It covers source control system selection, and gives examples on Subversion and Team Foundation Server.
The chapter goes into the details of coding the build script. The authors selected MsBuild as building tool, but they also give a fair comparison with NAnt.
This chapter gives a good introduction on how to set the CI server in the build process. The tools covered are: CruiseControl.Net, TeamCity and TFS 2010.
In this chapter you’ll learn how to get feedback from the CI servers discussed in the previous chapter. There’s even an example of using a LED display to show build status.
Here you’ll learn how to integrate your unit testing tools into the CI process. If you need a good guide on how to write unit tests, Manning has an excellent book on that subject: The Art of Unit Testing.
This chapter introduces integration, user interface, and acceptance testing in the CI process. Tool coverage includes White, Selenium and FitNesse.
This chapter is dedicated to coding quality. This chapter is very useful as the techniques can be applied to support code reviews. The tools covered are FxCop, StyleCop, NDepend and TeamCity’s duplicate finder.
This chapter teaches how to use Sandcastle with XML comments to build your documentation directly from the code source.
Here the authors explain the available options for building installers. It covers WiX, MSDeploy and ClickOnce.
Some of your applications are probably using a transactional database as repository. This chapter covers basic database versioning with RoundhousE and more advanced scenarios (including test data generation) with Visual Studio database projects.