Automate BuildsPerform Single Command BuildsSeparate Build Scripts from Your IDECentralize Software AssetsCreate a Consistent Directory StructureFail Builds FastBuild for Any EnvironmentBuild Types and MechanismsBuild TypesPrivate BuildIntegration BuildRelease BuildBuild MechanismsTriggering BuildsUse a Dedicated Integration Build MachineUse a CI ServerRun Manual Integration BuildsRun Fast BuildsGather Build MetricsAnalyze Build MetricsChoose and Implement ImprovementsUse a Dedicated Integration Build MachineIncrease Integration Build Machine(s) Hardware CapacityImprove Test PerformanceStage BuildsExamine InfrastructureOptimize the Build ProcessBuild System Components SeparatelyImprove Software Inspection PerformancePerform Distributed Integration BuildsReevaluateHow Will This Work for You?“My project has seven billion lines of code. How is this going to work for me?”“I have a legacy application, so how will this work for me?”“What if our source code is in multiple version control repositories?”“Our project is separated geographically, so how can we practice CI?”“My integration builds are taking too long!”“We frequently get build failures. Are we doing something wrong?”“We can’t afford a separate build machine.”“Our software is too complex; we have to do things manually” or “No—we have all sorts of stuff going on.”“Our software uses a version control repository, but we need to support multiple versions using branching. How will this work?”SummaryQuestions