Foreword | p. xiii |
Foreword | p. xv |
Preface | p. xix |
About the Authors | p. xxxi |
About the Contributors | p. xxxiii |
A Background on CI: Principles and Practices | p. 1 |
Getting Started | p. 3 |
Build Software at Every Change | p. 4 |
Developer | p. 6 |
Version Control Repository | p. 7 |
CI Server | p. 8 |
Build Script | p. 10 |
Feedback Mechanism | p. 10 |
Integration Build Machine | p. 12 |
Features of CI | p. 12 |
Source Code Compilation | p. 12 |
Database Integration | p. 14 |
Testing | p. 15 |
Inspection | p. 17 |
Deployment | p. 18 |
Documentation and Feedback | p. 20 |
Summary | p. 20 |
Questions | p. 20 |
Introducing Continuous Integration | p. 23 |
A Day in the Life of CI | p. 25 |
What Is the Value of CI? | p. 29 |
Reduce Risks | p. 29 |
Reduce Repetitive Processes | p. 30 |
Generate Deployable Software | p. 31 |
Enable Better Project Visibility | p. 31 |
Establish Greater Product Confidence | p. 32 |
What Prevents Teams from Using CI? | p. 32 |
How Do I Get to "Continuous" Integration? | p. 33 |
When and How Should a Project Implement CI? | p. 35 |
The Evolution of Integration | p. 36 |
How Does CI Complement Other Development Practices? | p. 37 |
How Long Does CI Take to Set Up? | p. 38 |
CI and You | p. 39 |
Commit Code Frequently | p. 39 |
Don't Commit Broken Code | p. 41 |
Fix Broken Builds Immediately | p. 41 |
Write Automated Developer Tests | p. 41 |
All Tests and Inspections Must Pass | p. 42 |
Run Private Builds | p. 42 |
Avoid Getting Broken Code | p. 43 |
Summary | p. 44 |
Questions | p. 44 |
Reducing Risks Using CI | p. 47 |
Risk: Lack of Deployable Software | p. 49 |
Scenario: "It Works on My Machine" | p. 50 |
Scenario: Synching with the Database | p. 50 |
Scenario: The Missing Click | p. 52 |
Risk: Late Discovery of Defects | p. 53 |
Scenario: Regression Testing | p. 53 |
Scenario: Test Coverage | p. 54 |
Risk: Lack of Project Visibility | p. 55 |
Scenario: "Did You Get the Memo?" | p. 56 |
Scenario: Inability to Visualize Software | p. 56 |
Risk: Low-Quality Software | p. 57 |
Scenario: Coding Standard Adherence | p. 58 |
Scenario: Architectural Adherence | p. 59 |
Scenario: Duplicate Code | p. 60 |
Summary | p. 62 |
Questions | p. 62 |
Building Software at Every Change | p. 65 |
Automate Builds | p. 67 |
Perform Single Command Builds | p. 69 |
Separate Build Scripts from Your IDE | p. 73 |
Centralize Software Assets | p. 74 |
Create a Consistent Directory Structure | p. 75 |
Fail Builds Fast | p. 76 |
Build for Any Environment | p. 77 |
Build Types and Mechanisms | p. 78 |
Build Types | p. 78 |
Build Mechanisms | p. 80 |
Triggering Builds | p. 81 |
Use a Dedicated Integration Build Machine | p. 81 |
Use a CI Server | p. 85 |
Run Manual Integration Builds | p. 86 |
Run Fast Builds | p. 87 |
Gather Build Metrics | p. 88 |
Analyze Build Metrics | p. 89 |
Choose and Implement Improvements | p. 89 |
Stage Builds | p. 92 |
Reevaluate | p. 96 |
How Will This Work for You? | p. 96 |
Summary | p. 101 |
Questions | p. 102 |
Creating a Full-Featured CI System | p. 105 |
Continuous Database Integration | p. 107 |
Automate Database Integration | p. 110 |
Creating Your Database | p. 112 |
Manipulating Your Database | p. 115 |
Creating a Build Database Orchestration Script | p. 116 |
Use a Local Database Sandbox | p. 117 |
Use a Version Control Repository to Share Database Assets | p. 119 |
Continuous Database Integration | p. 121 |
Give Developers the Capability to Modify the Database | p. 123 |
The Team Focuses Together on Fixing Broken Builds | p. 124 |
Make the DBA Part of the Development Team | p. 124 |
Database Integration and the Integrate Button | p. 125 |
Testing | p. 125 |
Inspection | p. 125 |
Deployment | p. 126 |
Feedback and Documentation | p. 126 |
Summary | p. 126 |
Questions | p. 128 |
Continuous Testing | p. 129 |
Automate Unit Tests | p. 132 |
Automate Component Tests | p. 134 |
Automate System Tests | p. 136 |
Automate Functional Tests | p. 137 |
Categorize Developer Tests | p. 138 |
Run Faster Tests First | p. 141 |
Unit Tests | p. 141 |
Component Tests | p. 141 |
System Tests | p. 143 |
Write Tests for Defects | p. 143 |
Make Component Tests Repeatable | p. 148 |
Limit Test Cases to One Assert | p. 156 |
Summary | p. 158 |
Questions | p. 159 |
Continuous Inspection | p. 161 |
What Is the Difference between Inspection and Testing? | p. 164 |
How Often Should You Run Inspectors? | p. 165 |
Code Metrics: A History | p. 166 |
Reduce Code Complexity | p. 167 |
Perform Design Reviews Continuously | p. 170 |
Maintain Organizational Standards with Code Audits | p. 173 |
Reduce Duplicate Code | p. 176 |
Using PMD-CPD | p. 177 |
Using Simian | p. 178 |
Assess Code Coverage | p. 180 |
Evaluate Code Quality Continuously | p. 182 |
Coverage Frequency | p. 183 |
Coverage and Performance | p. 184 |
Summary | p. 185 |
Questions | p. 186 |
Continuous Deployment | p. 189 |
Release Working Software Any Time, Any Place | p. 191 |
Label a Repository's Assets | p. 191 |
Produce a Clean Environment | p. 194 |
Label Each Build | p. 195 |
Run All Tests | p. 196 |
Create Build Feedback Reports | p. 196 |
Possess Capability to Roll Back Release | p. 199 |
Summary | p. 199 |
Questions | p. 200 |
Continuous Feedback | p. 203 |
All the Right Stuff | p. 205 |
The Right Information | p. 205 |
The Right People | p. 207 |
The Right Time | p. 208 |
The Right Way | p. 209 |
Use Continuous Feedback Mechanisms | p. 209 |
p. 210 | |
SMS (Text Messages) | p. 212 |
Ambient Orb and X10 Devices | p. 214 |
Windows Taskbar | p. 217 |
Sounds | p. 218 |
Wide-Screen Monitors | p. 220 |
Summary | p. 222 |
Questions | p. 222 |
Epilogue: The Future of CI | p. 223 |
CI Resources | p. 227 |
Continuous Integration Web Sites/Articles | p. 227 |
CI Tools/Product Resources | p. 229 |
Build Scripting Resources | p. 232 |
Version Control Resources | p. 233 |
Database Resources | p. 234 |
Testing Resources | p. 236 |
Automated Inspection Resources | p. 239 |
Deployment Resources | p. 241 |
Feedback Resources | p. 241 |
Documentation Resources | p. 243 |
Evaluating CI Tools | p. 245 |
Considerations When Evaluating Tools | p. 247 |
Functionality | p. 248 |
Compatibility with Your Environment | p. 253 |
Reliability | p. 254 |
Longevity | p. 254 |
Usability | p. 255 |
Automated Build Tools | p. 255 |
Build Scheduler Tools | p. 263 |
Conclusion | p. 272 |
Bibliography | p. 273 |
Index | p. 275 |
Table of Contents provided by Ingram. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.