Chapter 8. Remote and parallel build support

Table of Contents

Mechanism
Deadlock prevention

Mechanism

Lets consider the following scenarios:

  1. Your product consists of components that should be built on different platforms. For example, in order to package your product, you need to build component1 on Windows, build component2 on Linux, and collect results of those builds to form a single package.

  2. It may take a long time to build your product. Ideally, you may want to build different parts of the product on different machines simultaneously, and then collect the build results of these parts to form a single product.

  3. Build a product on one machine, and send the build results to another machine for smoke and automation tests. If tests pass, you mark the current build as successful;otherwise, you mark it as failed.

QuickBuild can handle these complicated scenarios quite easily. The key is a special repository type: QuickBuild. The QuickBuild system itself can be treated as a type of repository just like other repositories such as CVS. This is makes sense, because repository is just a place for holding artifacts, which can be used during a build process. These artifacts can be source code saved in CVS repository, they can also be Jars or DLLs generated by and saved in a QuickBuild system. Several use cases are available to demonstrate how QuickBuild supports multi-platform remote builds.